Linked List reversal
See if you can figure this bit out.


Is this meant to be a Programming Puzzle?

You don't call append until after you finish calling reverse; reverse is recursive; so all the append calls will be called after all the reverse calls: and that explains why reverse will eventually terminate i.e. why the list will eventually be empty.

From a code-review point of view:


I fear that a recursive implementation might exceed your finite maximum stack size if the list is long.
You're deleting and creating new Node objects; you might instead be able to do it in a way that reuses existing Node instances.


Also, it should be spelled "sentinel".