Rotate Doubly Linked List Java
- Get link
- X
- Other Apps
PROGRAM TO ROTATE DOUBLY LINKED LIST BY N NODES
class LinkedList { /* Link list node */static class Node { char data; Node prev; Node next; } static Node head = null; // This function rotates a doubly linked // list counter-clockwise and updates the // head. The function assumes that N is // smallerthan size of linked list. It // doesn't modify the list if N is greater // than or equal to size static void rotate( int N) { if (N == 0) return; // Let us understand the below code // for example N = 2 and // list = a <-> b <-> c <-> d <-> e. Node current = head; // current will either point to Nth // or NULL after this loop. Current // will point to node 'b' in the // above example int count = 1; while (count < N && current != null) { current = current.next; count++; } // If current is NULL, N is greater // than or equal to count of nodes // in linked list. Don't change the // list in this case if (current == null) return; // current points to Nth node. Store // it in a variable. NthNode points to // node 'b' in the above example Node NthNode = current; // current will point to last node // after this loop current will point // to node 'e' in the above example while (current.next != null) current = current.next; // Change next of last node to previous // head. Next of 'e' is now changed to // node 'a' current.next = head; // Change prev of Head node to current // Prev of 'a' is now changed to node 'e' (head).prev = current; // Change head to (N+1)th node // head is now changed to node 'c' head = NthNode.next; // Change prev of New Head node to NULL // Because Prev of Head Node in Doubly // linked list is NULL (head).prev = null; // change next of Nth node to NULL // next of 'b' is now NULL NthNode.next = null; } // Function to insert a node at the // beginning of the Doubly Linked List static void push(char new_data) { Node new_node = new Node(); new_node.data = new_data; new_node.prev = null; new_node.next = (head); if ((head) != null) (head).prev = new_node; head = new_node; } /* Function to print linked list */static void printList(Node node) { while (node != null && node.next != null) { System.out.print(node.data + " "); node = node.next; } if(node != null) System.out.print(node.data); } // Driver's Code public static void main(String[] args) { /* Start with the empty list */ // Node head = null; /* Let us create the doubly linked list a<->b<->c<->d<->e */ push( 'e'); push( 'd'); push('c'); push('b'); push( 'a'); int N = 2; System.out.println("Given linked list "); printList(head); rotate( N); System.out.println(); System.out.println("Rotated Linked list "); printList(head); } } OUTPUT:
Given linked list a b c d e Rotated Linked list c d e a b
- Get link
- X
- Other Apps
Comments
Post a Comment