Java - Insert a new node at the start of the Doubly Linked List
In this method, a new node is inserted at the start of the doubly linked list. For example - if the given List is 10->20->30 and a new element 100 is added at the start, the List becomes 100->10->20->30.
Inserting a new node at the start of the doubly linked list is very easy. First, a new node with given element is created. It is then added at the start of the list by linking the head node to the new node.
The function push_front is created for this purpose. It is a 5-step process.
void push_front(int newElement) { //1. allocate node Node newNode = new Node(); //2. assign data element newNode.data = newElement; //3. assign null to the next and prev // of the new node newNode.next = null; newNode.prev = null; //4. Check the list is empty or not, // if empty make the new node as head if(head == null) { head = newNode; } else { //5. Adjust the links and make the new // node as head head.prev = newNode; newNode.next = head; head = newNode; } }
The below is a complete program that uses above discussed concept to insert new node at the start of the doubly linked list.
//node structure class Node { int data; Node next; Node prev; }; class LinkedList { Node head; LinkedList(){ head = null; } //Add new element at the start of the list void push_front(int newElement) { Node newNode = new Node(); newNode.data = newElement; newNode.next = null; newNode.prev = null; if(head == null) { head = newNode; } else { head.prev = newNode; newNode.next = head; head = newNode; } } //display the content of the list void PrintList() { Node temp = new Node(); temp = this.head; if(temp != null) { System.out.print("The list contains: "); while(temp != null) { System.out.print(temp.data + " "); temp = temp.next; } System.out.println(); } else { System.out.println("The list is empty."); } } }; // test the code public class Implementation { public static void main(String[] args) { LinkedList MyList = new LinkedList(); //Add three elements at the start of the list. MyList.push_front(10); MyList.push_front(20); MyList.push_front(30); MyList.PrintList(); } }
The above code will give the following output:
The list contains: 30 20 10