In this post, We will learn about Implementation to reverse a Singly Linked List in Java?
The logic used in this source code:
To reverse Linked List first of all we have to traverse through the linked list from head to tail and reverse the link in each step like each node instead of pointing to the next element started pointing to the previous node. This way the whole linked list can be reversed when we reach the last node and the last node becomes the new head of a linked list.
Below is the complete source code:
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 |
package com.kkjavatutorials.util; /** * Implementation to reverse a Singly Linked List in Java ? * @author KK JavaTutorials */ public class LinkedList<T> { private Node<T> head; //This internal class represents Node in Linked List private static class Node<T>{ private T data; private Node<T> next; public Node(T data) { super(); this.data = data; this.next = null; } } /** * Method to reverse a Singly Linked List */ public void reverseListList() { Node<T> mainReference = head; Node<T> previousReference = null; Node<T> currentReference = null; while (mainReference != null) { currentReference = mainReference; mainReference = mainReference.next; // Now reverse the Linked List currentReference.next = previousReference; previousReference = currentReference; head = currentReference; } } /** * This method insert a Node in Linked List * @param newNode has to insert in the List */ public void insert(Node<T> newNode) { if(head == null) { head = newNode; }else { Node<T> currentNode = head; while (currentNode.next != null) { currentNode = currentNode.next; } currentNode.next = newNode; } } /** * Method which traverse Linked List from * first to last node and prints Node's value. */ public void displayLinkedList() { Node<T> currentNode = head; while(currentNode!= null) { System.out.print(currentNode.data+" "); currentNode = currentNode.next; } } public static void main(String[] args) { Node<Integer> node1 = new Node<Integer>(10); Node<Integer> node2 = new Node<Integer>(20); Node<Integer> node3 = new Node<Integer>(30); Node<Integer> node4 = new Node<Integer>(40); Node<Integer> node5 = new Node<Integer>(50); Node<Integer> node6 = new Node<Integer>(60); Node<Integer> node7 = new Node<Integer>(70); LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.insert(node1); linkedList.insert(node2); linkedList.insert(node3); linkedList.insert(node4); linkedList.insert(node5); linkedList.insert(node6); linkedList.insert(node7); System.out.println("Original LinkedList:"); linkedList.displayLinkedList(); System.out.println(); linkedList.reverseListList(); System.out.println("Reversed LinkedList:"); linkedList.displayLinkedList(); } } |
Output of this program:
Original LinkedList:
10 20 30 40 50 60 70
Reversed LinkedList:
70 60 50 40 30 20 10
You May Also Like:
- How to remove a given key from the Singly Linked List in Java ?
- How to remove a node from a Singly Linked List at a given position in Java?
- How to remove the last node from a Singly Linked List in Java
- How to remove the first node from a Singly Linked List in Java ?
- How to check whether a linked list has a loop/cycle in java?
That’s all about Implementation to reverse a Singly Linked List in Java?
If you have any feedback or suggestion please feel free to drop in below comment box.