WALK THE CHAIN ONCE WITH THREE POINTERS. REMEMBER THE NEXT NODE, FLIP THIS NODE TO POINT BACK AT THE ONE BEHIND IT, THEN SLIDE FORWARD. THE OLD TAIL BECOMES THE NEW HEAD.
EACH NODE ONLY KNOWS THE NODE AHEAD. TO REVERSE, MAKE EACH NODE POINT AT THE ONE BEHIND IT INSTEAD. SAVE THE NEXT NODE FIRST OR THE REST OF THE CHAIN IS LOST.
ONE NODE AT A TIME. BLUE CURR IS BEING REWIRED, THE TAN NODES ARE ALREADY FLIPPED, GREEN TEMP HOLDS THE NEXT NODE. THE GOLD TILE IS THE NEW HEAD.
1def reverseList(head):2 prev = None3 curr = head4 while curr:5 temp = curr.next6 curr.next = prev7 prev = curr8 curr = temp9 return prev
ONE PASS DOWN THE LIST, ONE POINTER FLIP PER NODE, SO N STEPS.
JUST THREE POINTERS: PREV, CURR, TEMP. THE LIST IS REWIRED IN PLACE.