两两交换链表中的元素

两两交换链表中的元素

采用模拟的方式,添加一个虚拟头节点,进行交换。

交换顺序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode ans = new ListNode(0);
ans.next = head;
ListNode cur = ans;
ListNode first,temp,second;
while(cur != null && cur.next!=null && cur.next.next!=null){
first = cur.next; //存储第一个节点
second = cur.next.next; //存储第二个节点
temp = cur.next.next.next; // 存储第三个节点

// 交换开始
cur.next = second;
second.next = first;
first.next = temp;

// 更新cur 的位置
cur = first;
}

return ans.next;
}
}