Given a linked list, reverse the nodes of a linked list k at a time and
return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end
should remain as it is.
You may not alter the values in the nodes, only nodes itself may be
changed.
Only constant memory is allowed.
For example,
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
用了兩個指針p1和p2,使得p1和p2相差k-1個位置。每次p1和p2區間reverse一下,然後再把同時更新p1和p2.
一開始想一遍走完,邊走邊reverse,但是太複雜了,是以還是這樣吧。。。