How to reverse a linked list in java using iterative
Write a program to reverse a LinkedList in Java using iterative. Solution: 1) Traverse through the linked list 2) Assign as below in loop next=prev; prev=current; current=next;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
package datastructure; public class LinkedListTest6 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); linkedList.addElement( new LinkedList.Node("1")); linkedList.addElement( new LinkedList.Node("2")); linkedList.addElement( new LinkedList.Node("3")); linkedList.addElement( new LinkedList.Node("4")); linkedList.addElement( new LinkedList.Node("5")); linkedList.addElement( new LinkedList.Node("6")); linkedList.addElement( new LinkedList.Node("7")); reverse(linkedList); } private static void displayLinkedListNodes(LinkedList.Node node) { while(node!=null && node.getNext()!=null){ System.out.println(node.element()); node=node.getNext(); } } private static void reverse(LinkedList linkedList) { LinkedList.Node prevNode = null; LinkedList.Node currNode = linkedList.getHeaderElement(); LinkedList.Node nextNode =null; while (currNode != null ) { nextNode=currNode.getNext(); currNode.next =prevNode; prevNode=currNode; currNode=nextNode; } System.out.println("Displaying linked list nodes after reversing "); displayLinkedListNodes(prevNode); } } class LinkedList{ private Node headerElement; private Node tailorElement; public LinkedList(){ this.headerElement = new Node("HeaderElement"); tailorElement = headerElement; } public Node getHeaderElement(){ return headerElement; } public void addElement(Node node){ tailorElement.next = node; tailorElement = node; } public static class Node{ Node next; private String value; public Node(String value){ this.value = value; } public String element() { return value; } public Node getNext() { return next; } public String toString(){ return this.value; } public void setNext(Node next){ this.next = next; } } } |
Output:
1 2 3 4 5 6 7 8 9 10 11 12 |
Displaying linked list nodes after reversing 7 6 5 4 3 2 1 |