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!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!