题目要求
整体思路
以两个结点为一组,一组一组的处理。
处理的方法是改变结点中next指针的指向。
在改变指针的指向时,涉及到该组的前一个结点。所以每一组需要处理3个结点
代码
class Solution {
public:
ListNode* swapPairs(ListNode* head)
{
if (head == nullptr)
return head;
ListNode *p1 = head, *p2 = head->next, *p0 = nullptr;
if (p2)
{
head = p2;
}
while (p1 != nullptr && p2 != nullptr)
{
p1->next = p2->next;
p2->next = p1;
if (p0)
{
p0->next = p2;
}
p0 = p1;
p1 = p1->next;
if (p1)
{
p2 = p1->next;
}
}
return head;
}
};