Iterate with prev/curr/next; flip pointer each step
When to useReverse a list, reverse sub-list, reorder list
iterative
Reverse Linked Listeasy
reverse_linked_listReverse Doubly Linked List
reverse_doubly_linked_listINITIALIZE
prev = null; curr = head
let prev = null;let curr = head;
let curr = head;let newHead = null;
TRAVERSE
while (curr !== null)
while (curr !== null) {
while (curr !== null) {
capture next
const next = curr.next
—
—
[REVERSE]
curr.next = prev (or swap prev/next for doubly-linked)
curr.next = prev;
curr.next = curr.prev;curr.prev = next;
advance
prev = curr; curr = next
prev = curr;curr = next;
newHead = curr;curr = next;
RETURN
return prev (the new head)
return prev;
return newHead;