leetcode 24. 两两交换链表中的节点

24. 两两交换链表中的节点

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

题解:代码随想录 ---24. 两两交换链表中的节点

c 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
/*创建一个虚拟节点:一开始该节点指向要交换的两个结点前,借助两个辅助变量完成交换,
交换完成后,该虚拟节点移动两个结点,继续进行下一轮交换,直到虚拟节点next域指向空(偶数节点),
虚拟节点next的next域指向空(注意偶数节点与奇数节点的结束条件)*/
struct ListNode* swapPairs(struct ListNode* head) {
    struct ListNode *newnoode=malloc(sizeof(struct ListNode));//创建虚拟节点
    newnoode->next=head;//指向头结点
    struct ListNode *cur=newnoode;//移动的节点
    //奇数和偶数节点的结束条件
    while(cur->next && cur->next->next)
    {
        struct ListNode *temp=cur->next; //保存第一个结点
        struct ListNode *temp1=cur->next->next->next;//保存第三个节点
        cur->next=cur->next->next;//步骤1
        cur->next->next=temp;//步骤2
        cur->next->next->next=temp1;//步骤3
        //更新节点
        cur=cur->next->next;
    }
    struct ListNode *result=newnoode->next;
    free(newnoode);
    return result;
}
相关推荐
算法与编程之美24 分钟前
提升minist的准确率并探索分类指标Precision,Recall,F1-Score和Accuracy
人工智能·算法·机器学习·分类·数据挖掘
MicroTech202540 分钟前
微算法科技(NASDAQ :MLGO)混合共识算法与机器学习技术:重塑区块链安全新范式
科技·算法·区块链
李牧九丶1 小时前
从零学算法1334
前端·算法
在繁华处1 小时前
C语言经典算法:汉诺塔问题
c语言·算法
le serein —f1 小时前
用go实现-反转链表
leetcode·链表·golang
爪哇部落算法小助手2 小时前
每日两题day50
数据结构·c++·算法
curry____3033 小时前
基本算法(2025.11.21)
c++·算法
WWZZ20253 小时前
快速上手大模型:深度学习5(实践:过、欠拟合)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
司铭鸿4 小时前
图论中的协同寻径:如何找到最小带权子图实现双源共达?
linux·前端·数据结构·数据库·算法·图论
小年糕是糕手5 小时前
【C++】C++入门 -- 输入&输出、缺省参数
c语言·开发语言·数据结构·c++·算法·leetcode·排序算法