0
点赞
收藏
分享

微信扫一扫

算法【链表】| 两两交换链表中的节点

跟着Damon写代码 2022-05-06 阅读 145

文章目录

题目描述

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题
(即,只能进行节点交换)。

图解

在这里插入图片描述

在这里插入图片描述

code

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:
    // 1-2-3-4->5->6
    ListNode* swapPairs(ListNode* head) {
        ListNode *p = head, *s;
        if(p && p->next) {
            s = p->next;
            p->next = s->next;
            s->next = p;
            head = s;
            while (p->next && p->next->next) {
                s = p->next->next;
                p->next->next = s->next;
                s->next = p->next;
                p->next = s;
                p = s->next;
            }
        }
        return head;
    }
};
举报

相关推荐

0 条评论