两两交换链表中的结点

两两交换链表的结点

https://leetcode.cn/problems/swap-nodes-in-pairs/description/

图 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var swapPairs = function(head) {
// 创建虚拟结点,从虚拟结点开始,每次处理下面的两个结点。然后向后跳转两个结点。
let dummy = new ListNode(0)
dummy.next = head
//prev是当前结点
let prev = dummy
while(prev.next && prev.next.next){
let node1 = prev.next
let node2 = prev.next.next
//整个交换逻辑在这里
prev.next = node2
node1.next = node2.next
node2.next = node1
prev = node1
}
return dummy.next
};