GFG App
Open App
Browser
Continue

# Print reverse of a Linked List without actually reversing

Given a linked list, print reverse of it using a recursive function. For example, if the given linked list is 1->2->3->4, then output should be 4->3->2->1.
Note that the question is only about printing the reverse. To reverse the list itself see this
Difficulty Level: Rookie

Algorithm

1. call print reverse for head->next

Implementation:

## Python3

 # Python3 program to print reverse # of a linked list   # Node class class Node:           # Constructor to initialize     # the node object     def __init__(self, data):                   self.data = data         self.next = None       class LinkedList:           # Function to initialize head     def __init__(self):         self.head = None           # Recursive function to print     # linked list in reverse order     def printrev(self, temp):                   if temp:             self.printrev(temp.next)             print(temp.data, end = ' ')         else:             return               # Function to insert a new node     # at the beginning     def push(self, new_data):                   new_node = Node(new_data)         new_node.next = self.head         self.head = new_node   # Driver code llist = LinkedList()   llist.push(4) llist.push(3) llist.push(2) llist.push(1)   llist.printrev(llist.head)       # This code is contributed by Vinay Kumar(vinaykumar71)

## Javascript



Output

4 3 2 1

Time Complexity: O(n)

Auxiliary Space: O(n) for stack space since using recursion

Another approach:

We can also perform the same action using a stack using iterative method.

Algorithm:

Store the values of the linked list in a stack.
Keep removing the elements from the stack and print them.

Implementation:

## Javascript



Output

1 -> 2 -> 3 -> 4 ->
4 -> 3 -> 2 -> 1 ->

Time Complexity: O(N)

As we are traversing the linked list only once.

Auxiliary Space: O(N)

The extra space is used in storing the elements in the stack.