C# 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 2. print head->data
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!
Please Login to comment...