Skip to content
Related Articles

Related Articles

Python Program For Printing Reverse Of A Linked List Without Actually Reversing

Improve Article
Save Article
Like Article
  • Last Updated : 18 May, 2022

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 
 

reverse-a-link-list

Algorithm: 

printReverse(head)
  1. call print reverse for head->next
  2. print head->data

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)

Output: 

4 3 2 1

Time Complexity: O(n)

Please refer complete article on Print reverse of a Linked List without actually reversing for more details!


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!