力扣链表基础之两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

示例

1
2
输入:head = [1,2,3,4]
输出:[2,1,4,3]

思路

使用虚拟头节点。交换两个相邻元素。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func swapPairs(head *ListNode) *ListNode {
dummy := new(ListNode)
dummy.Next = head
cur := dummy
for cur.Next != nil && cur.Next.Next != nil {
tmp := cur.Next
tmp1 := cur.Next.Next.Next

cur.Next = cur.Next.Next
cur.Next.Next = tmp
cur.Next.Next.Next = tmp1

cur = cur.Next.Next

}
return dummy.Next
}