- Given a single linked list, print single linked list in reverse order in java.
- Traverse the single linked list using recursive algorithm.
Example: reverse single linked list using recursive algorithm
- The regular order printing of above linked list is:
- 1 2 3 4 5
- Print single linked list in reverse order i.e. starting from node 5 (from last node) till the head node.
- 5 4 3 2 1
Algorithm – print single linked list in reverse order using recursion
- Recursive function taking head reference of linked list
- Keep on calling the recursive function
- We will use tail recursion method.
- Until we reach last node of linked list
- We have reached the last node
- return from here (so that we start printing the data)
- Start printing the data (As we have reached last node)
- Stack unwinding, will print the data from last to first node.
Time complexity of algorithm is O (n)
Program – print single linked list in reverse order using recursive algorithm.
1.) PrintReverseLinkedList Class:
- PrintReverseLinkedList class is responsible for printing single linked list in reverse order.
- We will traverse single linked list using recursive method.
package org.learn.Question;
import org.learn.List.Node;
public class PrintReverseLinkedList {
public static void printReverseLinkedList(Node head) {
if (null == head) {
return;
}
printReverseLinkedList(head.next);
System.out.printf("%d ", head.data);
}
public static void insert(Node head, int data) {
while (head.next != null)
head = head.next;
head.next = new Node(data);
}
public static void print(Node head) {
while (head != null) {
System.out.printf("%d ", head.data);
head = head.next;
}
System.out.println("");
}
}
2.) App Class:
We are performing the following operation in main method
- We are creating the single linked list in main method.
- We will call method of PrintReverseLinkedList class, to print single linked list, in a reverse order.
package org.learn.Client;
import org.learn.List.Node;
import org.learn.Question.PrintReverseLinkedList;
public class App {
public static void main(String[] args) {
int[] data = { 1, 2, 3, 4, 5 };
Node head = new Node(data[0]);
for (int count = 1; count < data.length; count++)
PrintReverseLinkedList.insert(head, data[count]);
System.out.println("1. Original Single linked list : ");
PrintReverseLinkedList.print(head);
System.out.println("2. Printing single linked list in reverse order : ");
PrintReverseLinkedList.printReverseLinkedList(head);
}
}
3.) Node Class:
- Node class is representing the node (s) of a single linked list
package org.learn.List;
public class Node {
public int data;
public Node next;
public Node(int num) {
this.data = num;
this.next = null;
}
}
Output – print single linked list in reverse order using recursive algorithm
1. Original Single linked list : 1 2 3 4 5 2. Printing single linked list in reverse order : 5 4 3 2 1
Download code – print single linked list in reverse order