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