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;
}
相关推荐
CappuccinoRose几秒前
排序算法和查找算法 - 软考备战(十五)
数据结构·python·算法·排序算法·查找算法
旖-旎3 分钟前
分治(交易逆序对的总数)(6)
c++·算法·leetcode·排序算法·归并排序
北顾笙9803 分钟前
day14-数据结构力扣
数据结构·算法·leetcode
Ln5x9qZC212 分钟前
尾递归与Continuation
算法
一路向北he12 分钟前
esp32库依赖
c语言·c++·算法
老四啊laosi12 分钟前
[双指针] 6. 查找总价为目标值的两个商品
算法·力扣·总价为目标值得两商品
人间寥寥情难诉29 分钟前
LRU算法本地实现
java·算法·spring
moonsea020331 分钟前
2026.4.2
开发语言·c++·算法
cpp_250138 分钟前
P10376 [GESP202403 六级] 游戏
c++·算法·动态规划·题解·洛谷·gesp六级
智者知已应修善业39 分钟前
【51单片机4个IO实现16按键可扩展独立按键64矩阵驱动显示矩阵原值】2023-5-8
c++·经验分享·笔记·算法·51单片机