LeetCode24 两两交换链表中的节点

链接: https://leetcode-cn.com/problems/swap-nodes-in-pairs/

题面

给定一个矩阵,交换每个相邻的一对节点。

解法

引入一个虚拟节点(dummy node),使其的next指向表头节点,每次向后操作三个节点,并通过如下图所示的方法完成交换

结束后将temp移动到原先的node2的位置(移动后的node1)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode* dummy = new ListNode(0, head);
ListNode* temp = dummy;
while(temp -> next != nullptr && temp -> next -> next != nullptr) {
ListNode *node1 = temp -> next, *node2 = node1 -> next;
temp -> next = node2;
node1 -> next = node2 -> next;
node2 -> next = node1;
temp = node1;
}
return dummy -> next;
}
};