Open In App

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

Last Updated : 08 Jul, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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)

Space Complexity: O(n) for call stack since using recursion

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


Next Article

Similar Reads