Algorithm Code
Time: O(n) | Space: O(1)
1function reverseList(head) {
2 let prev = null;
3 let current = head;
4
5 while (current !== null) {
6 let next = current.next;
7 current.next = prev;
8 prev = current;
9 current = next;
10 }
11
12 return prev; // New head
13}Algorithm Steps
Step 1 of 16
1
Initialize Pointers
Set prev = null, current = head
2
Store Next Pointer
Store next = current.next (node 1)
3
Reverse Link
Point current.next to prev (null)
4
Move Pointers
Move prev to node 0, current to node 1
5
Store Next Pointer
Store next = current.next (node 2)
6
Reverse Link
Point current.next to prev (node 0)
7
Move Pointers
Move prev to node 1, current to node 2
8
Store Next Pointer
Store next = current.next (node 3)
9
Reverse Link
Point current.next to prev (node 1)
10
Move Pointers
Move prev to node 2, current to node 3
11
Store Next Pointer
Store next = current.next (node 4)
12
Reverse Link
Point current.next to prev (node 2)
13
Move Pointers
Move prev to node 3, current to node 4
14
Store Next Pointer
Store next = current.next (null)
15
Reverse Link
Point current.next to prev (node 3)
16
Complete
Linked list reversed! Return prev as new head
Linked List
prev
NULL
current
1
0
→
next
2
1
→
3
2
→
4
3
→
5
4
Iterative Approach
Technique: Three pointers (prev, current, next)
Space: O(1) - constant space
Current
Prev
Next
Processed
Step 0 of 150%
0.25x4x