Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Reverse a Singly Linked List Iterative in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind reversing a singly linked list iteratively?
We change the direction of the links one by one by keeping track of the previous, current, and next nodes until all nodes point backward.
Click to reveal answer
beginner
In the iterative reversal of a singly linked list, which pointers do we typically use?
We use three pointers: previous (initially null), current (starting at head), and next (to store current's next node temporarily).
Click to reveal answer
intermediate
Why do we need to store the next node before changing the current node's next pointer?
Because once we change current's next pointer to previous, we lose the original next node. Storing it first lets us continue traversing the list.
Click to reveal answer
beginner
What is the time complexity of reversing a singly linked list iteratively?
It is O(n), where n is the number of nodes, because we visit each node exactly once.
Click to reveal answer
beginner
Show the final state of the list after reversing 1 -> 2 -> 3 -> null iteratively.
The reversed list is 3 -> 2 -> 1 -> null.
Click to reveal answer
Which pointer should initially be set to null when reversing a singly linked list iteratively?
Anext
Bcurrent
Chead
Dprevious
What happens if you forget to store the next node before changing current.next?
AYou lose access to the rest of the list
BThe list reverses correctly
CThe previous pointer becomes null
DThe head pointer moves forward
What is the new head of the list after iterative reversal?
AThe last node of the original list
BThe middle node
CNull
DThe original head
How many times do we visit each node during iterative reversal?
ATwice
BThree times
COnce
DZero times
Which of these is NOT a pointer used in iterative reversal?
Acurrent
Btail
Cnext
Dprevious
Explain step-by-step how to reverse a singly linked list using iteration.
Think about how you change links one by one while moving through the list.
You got /5 concepts.
    Describe what happens to the head and tail nodes after reversing a singly linked list iteratively.
    Consider how the direction of links changes the start and end of the list.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does reversing a singly linked list iteratively mean?
      head -> 1 -> 2 -> 3 -> null becomes?
      easy
      A. head -> 3 -> 2 -> 1 -> null
      B. head -> 1 -> 2 -> 3 -> null
      C. head -> null -> 1 -> 2 -> 3
      D. head -> 2 -> 3 -> 1 -> null

      Solution

      1. Step 1: Understand the linked list order

        The original list goes from 1 to 3 in order: 1 -> 2 -> 3 -> null.
      2. Step 2: Reverse the pointers iteratively

        Reversing means the last node becomes first, so the list becomes 3 -> 2 -> 1 -> null.
      3. Final Answer:

        head -> 3 -> 2 -> 1 -> null -> Option A
      4. Quick Check:

        Reverse order = head -> 3 -> 2 -> 1 -> null [OK]
      Hint: Reversing flips the list order completely [OK]
      Common Mistakes:
      • Thinking the list stays the same after reverse
      • Confusing node values with pointers
      • Assuming null moves to front
      2. Which of the following is the correct way to initialize pointers for iterative reversal of a singly linked list in JavaScript?
      easy
      A. let prev = null, current = null;
      B. let prev = head, current = null;
      C. let prev = head, current = head.next;
      D. let prev = null, current = head;

      Solution

      1. Step 1: Initialize previous pointer to null

        Before reversal, previous node is null because head has no previous.
      2. Step 2: Initialize current pointer to head

        Current starts at head to traverse the list.
      3. Final Answer:

        let prev = null, current = head; -> Option D
      4. Quick Check:

        Start prev=null, current=head [OK]
      Hint: Prev starts null, current starts at head [OK]
      Common Mistakes:
      • Setting prev to head initially
      • Setting current to null at start
      • Swapping initialization order
      3. What is the output of the following code?
      class Node {
        constructor(val) {
          this.val = val;
          this.next = null;
        }
      }
      
      function reverseList(head) {
        let prev = null;
        let current = head;
        while (current) {
          let nextTemp = current.next;
          current.next = prev;
          prev = current;
          current = nextTemp;
        }
        return prev;
      }
      
      // Create list: 1 -> 2 -> 3 -> null
      let head = new Node(1);
      head.next = new Node(2);
      head.next.next = new Node(3);
      
      let reversedHead = reverseList(head);
      
      let result = [];
      let node = reversedHead;
      while (node) {
        result.push(node.val);
        node = node.next;
      }
      console.log(result);
      medium
      A. []
      B. [3, 2, 1]
      C. [null]
      D. [1, 2, 3]

      Solution

      1. Step 1: Trace reversal loop

        Each iteration reverses the next pointer: 1->2->3 becomes 3->2->1.
      2. Step 2: Collect values from reversed list

        After reversal, traversing from prev (new head) gives values 3, 2, 1.
      3. Final Answer:

        [3, 2, 1] -> Option B
      4. Quick Check:

        Reversed list values = [3, 2, 1] [OK]
      Hint: Reversed list values appear in reverse order [OK]
      Common Mistakes:
      • Returning original head instead of prev
      • Not updating current pointer correctly
      • Collecting values before reversal
      4. Find the error in this iterative reversal code snippet:
      function reverseList(head) {
        let prev = head;
        let current = head.next;
        while (current !== null) {
          let nextTemp = current.next;
          current.next = prev;
          prev = current;
          current = nextTemp;
        }
        head.next = null;
        return prev;
      }
      medium
      A. head.next should not be set to null
      B. current should start as head, not head.next
      C. prev should start as null, not head
      D. nextTemp should be assigned after changing current.next

      Solution

      1. Step 1: Check initial pointer setup

        prev must start as null because head has no previous node before reversal.
      2. Step 2: Understand impact of wrong prev initialization

        Starting prev as head causes a cycle or incorrect links during reversal.
      3. Final Answer:

        prev should start as null, not head -> Option C
      4. Quick Check:

        prev=null start fixes reversal [OK]
      Hint: Prev must start null to avoid cycles [OK]
      Common Mistakes:
      • Starting prev at head causing loops
      • Not setting head.next to null after reversal
      • Changing nextTemp after modifying current.next
      5. Given a singly linked list with nodes containing values 1 -> 2 -> 3 -> 4 -> 5 -> null, write an iterative function to reverse only the first 3 nodes. What will be the list after reversal?
      hard
      A. 3 -> 2 -> 1 -> 4 -> 5 -> null
      B. 3 -> 2 -> 1 -> null
      C. 5 -> 4 -> 3 -> 2 -> 1 -> null
      D. 1 -> 2 -> 3 -> 4 -> 5 -> null

      Solution

      1. Step 1: Reverse first 3 nodes iteratively

        Reverse nodes 1, 2, 3 to get 3 -> 2 -> 1.
      2. Step 2: Connect reversed part to remaining list

        Node 1 (now last in reversed part) points to node 4, preserving rest of list.
      3. Final Answer:

        3 -> 2 -> 1 -> 4 -> 5 -> null -> Option A
      4. Quick Check:

        Partial reversal keeps rest intact [OK]
      Hint: Reverse only first k nodes, link rest after [OK]
      Common Mistakes:
      • Reversing entire list instead of first 3 nodes
      • Not reconnecting reversed part to rest
      • Breaking list by losing tail connections
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard