/*
public class DoublyLinkedListNode {
int val;
DoublyLinkedListNode next;
DoublyLinkedListNode prev;
public DoublyLinkedListNode(int val) {
[Link] = val;
[Link] = null;
[Link] = null;
}
}
*/
// Implementation for Doubly Linked List
public class DoublyLinkedList {
DoublyLinkedListNode head;
DoublyLinkedListNode tail;
public DoublyLinkedList() {
head = new DoublyLinkedListNode(-1);
tail = new DoublyLinkedListNode(-1);
[Link] = tail;
[Link] = head;
}
public void insertFront(int val) {
DoublyLinkedListNode newNode = new DoublyLinkedListNode(val);
[Link] = head;
[Link] = [Link];
[Link] = newNode;
[Link] = newNode;
}
public void insertEnd(int val) {
DoublyLinkedListNode newNode = new DoublyLinkedListNode(val);
[Link] = tail;
[Link] = [Link];
[Link] = newNode;
[Link] = newNode;
}
public void removeFront() {
[Link] = head;
[Link] = [Link];
}
public void removeEnd() {
[Link] = tail;
[Link] = [Link];
}
public void print() {
DoublyLinkedListNode curr = [Link];
while (curr != tail) {
[Link]([Link] + " -> ");
curr = [Link];
}
[Link]();
}
}