[leeetcode刷题整理]leetcode24 Swap Nodes in Pairs

题目描述:

[leeetcode刷题整理]leetcode24 Swap Nodes in Pairs_第1张图片

AC代码:

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        auto dummy=new ListNode(-1);
        dummy->next=head;
        for(auto p=dummy;p->next&&p->next->next;)
        {
            auto a=p->next;
            auto b=p->next->next;
            p->next=b;
            a->next=b->next;
            b->next=a;
            p=a;
        }
        return dummy->next;
    }
};

思路;

因为这题中的头结点会改变,可以引入一个虚拟头结点dummy,data域随便设个值,指针域指向头结点。

为了使相邻结点交换(题目要求了不能简单的改变结点中的数据),只能通过修改指针的指向。

这题最关键的就是确定修改指针指向的顺序,我没想出什么好办法,就试了几遍,找到了可以的一种顺序,如下图;

[leeetcode刷题整理]leetcode24 Swap Nodes in Pairs_第2张图片

[leeetcode刷题整理]leetcode24 Swap Nodes in Pairs_第3张图片

 

刚学到数据结构,如果哪里有不对的地方,欢迎大家指正。

你可能感兴趣的:(数据结构,链表)