package linkedlist.singly; //How to reverse Singly Linked List //Simple, just have 3 pointers. Start reversing it, Let us take example and understand, Say we have Link list as, // 1 -> 2 -> 3 -> 4 -> 5 //p1 <- p2 <- p3, swap pointers // p1 <- p2 <- p3, swap pointers // p1 <- p2 <- p3, swap pointers // p1 <- p2 <- p3, swap pointers // p1 <- p2 <- p3, swap pointers // p1 <- p2 <- p3 ----------> loop break as p2 become null // When p2 become null, observe p1, it contains fully reversed link list. public class ReverseTheLinkedList { Node startNode; public static void main(String[] args) { ReverseTheLinkedList reverseTheLinkedList = new ReverseTheLinkedList(); reverseTheLinkedList.addNode(new Node(10)); reverseTheLinkedList.addNode(new Node(20)); reverseTheLinkedList.addNode(new Node(30)); reverseTheLinkedList.addNode(new Node(40)); reverseTheLinkedList.addNode(new Node(50)); reverseTheLinkedList.printLinkList(); reverseTheLinkedList.reverseLinkList(); System.out.println("\nReverse:"); reverseTheLinkedList.printLinkList(); } public void reverseLinkList(){ Node backNode = null; while(startNode!=null){ Node aheadNode = startNode.getNext(); startNode.setNext(backNode); backNode = startNode; startNode = aheadNode; } startNode = backNode; } private void printLinkList() { Node tempNode = startNode; while(tempNode!=null){ System.out.print(tempNode.getData() + " "); tempNode = tempNode.getNext(); } } private void addNode(Node node) { if(startNode!=null){ Node tempNode = startNode; while(tempNode.getNext()!=null){ tempNode = tempNode.getNext(); } tempNode.setNext(node); }else{ this.startNode = node; } } }
Questions on Stack, Queues, Linkedlist, Binary Trees, Sorting, Searching, Graphs etc with solution using Java Language.
Sunday, 24 May 2015
Reverse a linked list.
Labels:
Linkedlist
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment