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
# 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!