两两交换链表中的节点

你存在,我深深的脑海里~


题目:


示例:


思路:

这个题有点类似于反转一个单链表,不同的地方在于这个题不全反转,所以我们不同的地方在于此题多用了一个prve指针保存n1的前一个节点,以及头的改变,用newhead保存一个新的头,其他都大同小异,参考:反转一个单链表


代码:

复制代码
struct ListNode* swapPairs(struct ListNode* head)
{
    if (head == NULL)
        return NULL;

    struct ListNode* newhead = head;

    struct ListNode* n1 = head;
    struct ListNode* n2 = NULL;
    struct ListNode* n3 = NULL;

    struct ListNode* prve = NULL;
    while (n1 && n1->next)
    {

        n2 = n1->next;
        n3 = n2->next;
        if (n1 == head)
        {
            n1->next = n2->next;
            n2->next = n1;
            newhead = n2;
        }
        else
        {
            n1->next = n2->next;
            n2->next = n1;

            prve->next = n2;
        }
        prve = n1;
        n1 = n3;
    }

    return newhead;
}

个人主页:Lei宝啊

愿所有美好如期而遇

相关推荐
清木!10 小时前
排序算法比较
数据结构·算法·排序算法
汉克老师11 小时前
GESP6级C++考试语法知识(十七、数据结构(三、认识队列 Queue))
数据结构·c++·队列·gesp6级·gesp六级·数组模拟队列
JavaWeb学起来11 小时前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
啊董dong14 小时前
noi-2026年5月12号小测验
数据结构·c++·算法
南境十里·墨染春水15 小时前
数据结构 —— 链表
数据结构·链表
图码16 小时前
二分查找进阶:如何在有序数组中快速找到Upper Bound?
数据结构·算法·面试·分类·柔性数组
Cthy_hy16 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
代码中介商17 小时前
红黑树完全指南:从五条性质到完整插入删除实现
数据结构·算法
Sarvartha19 小时前
单链表的顺序建立与结点的删除(期末题复现)
数据结构
gumichef20 小时前
二叉树链式结构的实现
算法·链表·二叉树·队列