A linked list node holds a value and a reference to the next node. You can't jump to the middle; you walk from the head. Most list problems come down to changing next references in the right order.
Three habits avoid the usual mistakes. Save a reference before you overwrite it, or the rest of the list is gone. Put a dummy node in front of the head when the head itself might change, so the first node needs no special case. And when a list might loop, walk it with a slow pointer and a fast one: if they ever meet, there is a loop.
These patterns run in O(n) time with O(1) extra space, because they move references instead of copying nodes. Test an empty list, a single node, the head being removed, and long lists, where a recursive solution can run out of stack.