GeeksforGeeks App
Open App
Browser
Continue

# Java 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:

## Java

 `// Java program to print reverse``// of a linked list``class` `LinkedList``{``    ``// Head of list``    ``Node head; ` `    ``// Linked list Node``    ``class` `Node``    ``{``        ``int` `data;``        ``Node next;``        ``Node(``int` `d)``        ``{``            ``data = d;``            ``next = ``null``;``        ``}``    ``}` `    ``// Function to print reverse of``    ``// linked list``    ``void` `printReverse(Node head)``    ``{``        ``if` `(head == ``null``) ``return``;` `        ``// Print list of head node``        ``printReverse(head.next);` `        ``// After everything else is printed,``        ``//  Print head``        ``System.out.print(head.data + ``" "``);``    ``}` `    ``// Utility Functions` `    ``// Inserts a new Node at front``    ``// of the list.``    ``public` `void` `push(``int` `new_data)``    ``{``        ``/* 1 & 2: Allocate the Node &``                  ``Put in the data*/``        ``Node new_node = ``new` `Node(new_data);` `        ``// 3. Make next of new Node as head``        ``new_node.next = head;` `        ``// 4. Move the head to point``        ``// to new Node``        ``head = new_node;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``// Create linked list 1->2->3->4``        ``LinkedList llist = ``new` `LinkedList();``        ``llist.push(``4``);``        ``llist.push(``3``);``        ``llist.push(``2``);``        ``llist.push(``1``);` `        ``llist.printReverse(llist.head);``    ``}``}``// This code is contributed by Rajat Mishra`

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