"Make two pointers, advance the first through the list, advance the second every other time."
Stan's method would work.
Each time the firs pointer advances two nodes in a row, while the second advances one node.
when the first pointer reaches the end, the second reaches the mid-node.
A few minor issues:
Differentiate Odd/Even number of nodes in the list
Definition of mid-node in each case?
the case when the first pointer advances only one node in the last step..
Jim