Doubly Linked List
Doubly Linked List
public class DoublyLinkedList { static DNode root; static DNode temp; static DNode current; public void addNodes(int data){ DNode dNode = new DNode(data); if(root==null){ root = dNode; root.previousNode = null; root.nextNode = null; }else{ current = root; while(current.nextNode!=null){ current = current.nextNode; } current.nextNode = dNode; dNode.previousNode = current; dNode.nextNode = null; } } public void insertNode(int data, int after){ DNode dNode = new DNode(data); int ithNode = 1; current = root; while(ithNode != after){ current = current.nextNode; ithNode++; } temp = current.nextNode; current.nextNode = dNode; dNode.nextNode = temp; temp.previousNode = dNode; dNode.previousNode = current; } public void deleteNode(int nodeNumber){ int ithNode = 1; current = root; if(nodeNumber==1){ root = current.nextNode; current.nextNode = null; current.previousNode = null; }else{ while(ithNode != nodeNumber){ current = current.nextNode; ithNode++; } if(current.nextNode == null){ current.previousNode.nextNode = null; current.previousNode = null; }else{ current.previousNode.nextNode = current.nextNode; current.nextNode.previousNode = current.previousNode; } } } public void print(){ current = root; boolean arrow = true; do{ System.out.print((arrow) ? "|" + current.data + "|" : " --> " + "|" + current.data + "|" ); arrow = false; current = current.nextNode; }while(current!=null); } public void printBackwards(){ current = root; boolean arrow = true; while(current.nextNode!=null){ current = current.nextNode; } do{ System.out.print((arrow) ? "|" + current.data + "|" : " --> " + "|" + current.data + "|" ); arrow = false; current = current.previousNode; }while(current.previousNode!=null); System.out.print(" --> " + "|" + current.data + "|" ); } public static void main(String[] args){ DoublyLinkedList list = new DoublyLinkedList(); list.addNodes(1); list.addNodes(2); list.addNodes(3); list.addNodes(4); list.addNodes(5); list.addNodes(6); list.print(); System.out.println(); list.printBackwards(); System.out.println(); System.out.println("The number of DNodes in the Linked List is " + DNode.noOfLinkedList); } } public class DNode { static int noOfLinkedList = 0; int data; DNode previousNode; DNode nextNode; DNode(int data){ this.data = data; noOfLinkedList++; } }