K AVAILABLE
← BACK TO KNOWLEDGE

KNOWLEDGE

Reverse Linked List: Three-Pointer In-Place Reversal

How to reverse a singly linked list in-place using prev, curr, and next pointers with O(1) auxiliary space.

Updated Sep 4, 20265 min readFoundationalData Structures & Algorithms

INTERACTIVE ALGORITHM WORKBENCH

Reverse Linked List Visualizer

EasyLinked List & PointersTime O(n)Space O(1)
Singly Linked List Nodes & Pointersprevcurrnext
HEADcurr
1
⟶
2
⟶
3
⟶
4
⟶
5
✕ null
prevnull
currNode 1
nextnull
Reversal StateInitialized
solution.py
1def reverse_list(head):
▶2 prev = None
3 curr = head
4 while curr:
5 next_node = curr.next
6 curr.next = prev
7 prev = curr
8 curr = next_node
9 return prev
Step 1 of 22
WHY THIS STEP WORKS

To reverse in-place with O(1) space, we maintain three pointers: prev (already reversed tail), curr (node being reversed), and next (rest of original list).

  1. 1Initialize prev = null
  2. 2Initialize curr = head (Node 1)
  3. 3Prepare three-pointer reversal loop