GeeksforGeeks App
Open App
Browser
Continue

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

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)

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!

My Personal Notes arrow_drop_up