Python Program For Printing Reverse Of A Linked List Without Actually Reversing
Last Updated :
08 Jul, 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
Algorithm:
printReverse(head)
1. call print reverse for head->next
2. print head->data
Implementation:
Python3
class Node:
def __init__( self , data):
self .data = data
self . next = None
class LinkedList:
def __init__( self ):
self .head = None
def printrev( self , temp):
if temp:
self .printrev(temp. next )
print (temp.data, end = ' ' )
else :
return
def push( self , new_data):
new_node = Node(new_data)
new_node. next = self .head
self .head = new_node
llist = LinkedList()
llist.push( 4 )
llist.push( 3 )
llist.push( 2 )
llist.push( 1 )
llist.printrev(llist.head)
|
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!
Share your thoughts in the comments
Please Login to comment...