Doubly LinkedList

Run Settings
LanguageJava
Language Version
Run Command
class DoublyLinkedList{ Node head; Node tail; int length; class Node { int value; Node next; Node prev; Node(int value) { this.value = value; } } DoublyLinkedList(int value) { Node newNode = new Node(value); head = newNode; tail = newNode; length = 1; } public void printList() { Node temp = head; while(temp!=null) { System.out.print(temp.value+" "); temp = temp.next; } } public void getHead() { System.out.println("Head: "+head.value); } public void getTail() { System.out.println("Tail: "+head.value); } public void getLength() { System.out.println("Length: "+length); } public void append(int value) { Node newNode = new Node(value); if(length == 0) { head = newNode; tail = newNode; } else { tail.next = newNode; newNode.prev = tail; tail = newNode; } length++; } public Node removeLast() { if(length == 0) { return null; } Node temp = tail; if(length == 1) { head = null; tail = null; } else { tail = temp.prev; temp.prev = null; tail.next = null; } length--; return temp; } public void prepend(int value) { Node newNode = new Node(value); if(length == 0) { head = newNode; tail = newNode; } else { head.prev = newNode; newNode.next = head; head = newNode; } length++; } public Node removeFirst() { if(length == 0) { return null; } Node temp = head; if(length == 1) { head = null; tail = null; } else { head = temp.next; temp.next = null; head.prev = null; } length--; return temp; } public Node get(int index) { if(index<0 || index>length) { return null; } else { if(index < length/2) { Node temp = head; for(int i=0;i<index;i++) { temp=temp.next; } return temp; } else { Node temp = tail; for(int i=length-1;i>index;i--) { temp = temp.prev; } return temp; } } } public boolean insert(int index,int value) { if(index < 0 || index > length) { return false; } else if(index == 0) { prepend(value); return true; } else { Node newNode = new Node(value); Node before = get(index-1); Node after = get(index); before.next = newNode; before=newNode.prev; newNode.next = after; after.prev = newNode; length++; return true; } } public boolean set(int index, int value) { Node temp = get(index); if(temp!=null) { temp.value=value; return true; } return false; } public Node remove(int index) { if(index < 0 || index > length) { return null; } if(index == length-1) { return removeLast(); } if(index==0) { return removeFirst(); } Node temp = get(index); Node before = get(index-1); Node after = get(index+1); temp.next=null; temp.prev=null; before.next=after; after.prev=before; length--; return temp; } } class Main { public static void main(String[] args) { DoublyLinkedList newDoublyLinkedList = new DoublyLinkedList(4); newDoublyLinkedList.append(1); newDoublyLinkedList.append(2); newDoublyLinkedList.append(3); newDoublyLinkedList.append(4); newDoublyLinkedList.remove(0); // newDoublyLinkedList.set(5,0); // newDoublyLinkedList.insert(4,7); // System.out.println("index is: "+newDoublyLinkedList.get(4).value); // newDoublyLinkedList.prepend(3); // System.out.println("Removed node: "+newDoublyLinkedList.removeFirst().value); // System.out.println("Removed node is :"+newDoublyLinkedList.removeLast().value); // System.out.println("Removed node is :"+newDoublyLinkedList.removeLast().value); // System.out.println("Removed node is :"+newDoublyLinkedList.removeLast().value); // System.out.println("Removed node is :"+newDoublyLinkedList.removeLast().value); newDoublyLinkedList.printList(); // newDoublyLinkedList.getHead(); // newDoublyLinkedList.getTail(); // newDoublyLinkedList.getLength(); } }
Editor Settings
Theme
Key bindings
Full width
Lines