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

• Last Updated : 08 Jul, 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:

## C#

 `// C# program to print reverse ` `// of a linked list` `using` `System;`   `public` `class` `LinkedList` `{` `    ``// Head of list` `    ``Node head; `   `    ``// Linked list Node` `    ``class` `Node` `    ``{` `        ``public` `int` `data;` `        ``public` `Node next;` `        ``public` `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` `        ``Console.Write(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)` `    ``{` `        ``// Let us 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 Rajput-Ji `

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
Related Articles