Reverse The Doubly Linked List

Objective: Reverse The Doubly Linked List.

Example:

Reverse The Doubly Linked List

Approach:

  • Every Node in a doubly linked list has next and previous pointer.
  • Do the linear traversal of the linked list and keep swapping the next and previous pointers.
  • At the end, make the last pointer as the head of the list.

Complete Code:

public class reverseDoublyLinkedList {
public static Node head=null;
public static Node tail = null;
public static int size = 0;
public Node reverseDLL(){
Node current = head;
Node temp = null;
while(current!=null){
temp = current.prev; //swap the next and prev pointer
current.prev = current.next;
current.next = temp;
current = current.prev;
}
return temp.prev;
}
public void print(Node head){
Node current = head;
while(current!=null){
System.out.print(" " + current.data);
current = current.next;
}
}
public void add(int data){
Node n = new Node(data);
if(head==null){
head = n;
tail = n;
}else{
head.prev = n;
n.next = head;
head = n;
}
size++;
}
public static void main(String args[]){
reverseDoublyLinkedList r = new reverseDoublyLinkedList();
r.add(1);r.add(2);r.add(3);r.add(4);
r.print(head);
Node x = r.reverseDLL();
System.out.println("");
r.print(x);
}
}
class Node{
int data;
Node next;
Node prev;
public Node(int data){
this.data =data;
this.next = null;
this.prev = null;
}
}


Output:

->4->3->2->1
->1->2->3->4