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

• 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

Algorithm:

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

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