How to Reverse a Linked List
A step-by-step guide on how to safely reverse a singly linked list using three pointers.
Understand the Data Structure
A linked list is a chain of nodes where each node holds a value and a pointer to the next node. The list has a HEAD pointer that tells you where the list begins. The last node points to NULL, marking the end.
Prepare the Three Pointers
You cannot naively flip a pointer because you will lose access to the rest of the list. Initialize three pointers: PREV starts as NULL, CURR starts at HEAD, and NEXT starts as NULL.
Save the Next Node
Before making any changes, set NEXT equal to CURR.next. This ensures that after you break the current link, you still know how to advance to the remaining unreversed nodes.
Flip the Current Pointer
Set CURR.next equal to PREV. This is the actual reversal step. The current node now points backwards to the previous node (or NULL if it is the first node being processed).
Slide the Pointers Forward
Update PREV to equal CURR, and update CURR to equal NEXT. This slides your entire working window one node forward.
Repeat Until the End
Place the previous three steps inside a while loop that continues as long as CURR is not NULL.
Update the HEAD
When the loop finishes, CURR is NULL and PREV is pointing at the final node. Set HEAD equal to PREV. You have successfully reversed the list.
Ready to master this completely?
Want to upskill yourself, crack your next interview, and get your dream job? Join our comprehensive course to dive deeper with high-quality video tutorials, solve interview questions, and a premium community.

