Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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 

reverse-a-link-list

Algorithm:

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

Implementation: 

Javascript




<script>
// Javascript program to print reverse
// of a linked list
 
// Head of list
var head;
 
// Linked list Node
class Node
{
    constructor(val)
    {
        this.data = val;
        this.next = null;
    }
}
 
// Function to print reverse of
// linked list
function printReverse(head)
{
    if (head == null)
        return;
 
    // Print list of head node
    printReverse(head.next);
 
    // After everything else is printed
    document.write(head.data + " ");
}
 
// Utility Functions
 
// Inserts a new Node at front of the list.
function push(new_data)
{
    /* 1 & 2: Allocate the Node &
              Put in the data */
    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
// Create linked list 1->2->3->4
push(4);
push(3);
push(2);
push(1);
 
printReverse(head);
// This code is contributed by Rajput-Ji
</script>


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!
 



Last Updated : 08 Jul, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads