Reverse a singly linked list iteratively. Explain the pointers.
Answer
- Keep
prev = Noneandcurr = head. - Loop: save
nxt = curr.next, pointcurr.next = prev, then moveprev = curr,curr = nxt. - When
curris None,previs the new head. - O(n) time, O(1) memory. A recursive version uses O(n) stack.
def reverse(head):
prev, curr = None, head
while curr:
nxt = curr.next
curr.next = prev
prev, curr = curr, nxt
return prev