Fundamentals/Patterns/Linked List — Reverse In-Place2 problems· Linked List

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_list
Reverse Doubly Linked List
reverse_doubly_linked_list
INITIALIZE
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;