LeetCode 24. 两两交换链表中的节点
原题链接
中等
作者:
ShineShaye
,
2022-07-05 11:18:12
,
所有人可见
,
阅读 128
/**
1,建立冗余结点方便操作
2,设置一个前置结点,每次移动到要交换的位置前面
3,判断其后续是否还有两个结点,如果有,就调整指针(画图)
* 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;
a->next = b->next;
b->next = a;
p->next = b;
p = a;
}
return dummy->next;
}
};