算法伪代码
function reverseKGroup(head, k):
dummy = new Node(0, head)
pre = dummy, end = dummy
while end.next != null:
for i in 0..k: end = end.next
if end == null: break
start = pre.next
nextGroup = end.next
end.next = null // 断开链接
pre.next = reverse(start)
start.next = nextGroup // 连接后面
pre = start
end = start
return dummy.next
function reverse(head):
pre = null, cur = head
while cur != null:
nxt = cur.next
cur.next = pre
pre = cur, cur = nxt
return pre