题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/
思路如下:
初始 p = dummy
,令 a = p->next, b = a->next
:
第一步 p->next = b
:
第二步 a->next = b->next
:
第三步 b->next = a
:
然后 p = a
,令 a = p->next, b = a->next
,如此循环往复。
C++代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
auto dummy = new ListNode(-1); // 创建一个虚拟头节点
dummy->next = head;
auto p = dummy;
while (p->next && p->next->next) {
auto a = p->next, b = a->next;
p->next = b;
a->next = b->next;
b->next = a;
p = a;
}
return dummy->next;
}
};