Reversal as Train Coupling
Every pointer reassignment as a physical action.
This animation turns the reversal loop into physical work: nodes are train cars, and each .next pointer is a coupling arrow between them.
Three labeled cranes — prev, cur, and next — step along the train together. Each iteration plays the four moves of the dance in order: the next crane grabs the car after cur (saving the rest of the train before anything is cut), then cur's coupling detaches, swings 180 degrees, and reattaches pointing backwards. Finally the prev and cur cranes each step one car forward.
The moment to watch closely is mid-animation: the train is visibly split in two — a reversed front section behind prev, an untouched rear section ahead of cur, and no coupling between them. That split is not a bug; the next crane is holding the only link to the rear, which is exactly why "save before you cut" is the iron rule. Let go of that and the rear cars are lost forever.
In merge mode, two sorted trains zipper into one behind a dummy locomotive — a throwaway front car that exists so the first real coupling is never a special case. It is discarded at the end; the answer starts at the car behind it.