思路
- 没什么,捋清 反转前后 的指针变化关系就行。
func swapPairs(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
//虚拟头节点,避免掉一些不必要的讨论
dummyHead := &ListNode{Next:head}
pre := dummyHead
for cur := dummyHead.Next;cur != nil && cur.Next != nil; {
next := cur.Next.Next
pre.Next = cur.Next
pre.Next.Next = cur
cur.Next = next
pre = cur
cur = cur.Next
}
return dummyHead.Next
}