C语言 | Leetcode C语言题解之第147题对链表进行插入排序

题目:

题解:

cpp 复制代码
struct ListNode *insertionSortList(struct ListNode *head) {
    if (head == NULL) {
        return head;
    }
    struct ListNode *dummyHead = malloc(sizeof(struct ListNode));
    dummyHead->val = 0;
    dummyHead->next = head;
    struct ListNode *lastSorted = head;
    struct ListNode *curr = head->next;
    while (curr != NULL) {
        if (lastSorted->val <= curr->val) {
            lastSorted = lastSorted->next;
        } else {
            struct ListNode *prev = dummyHead;
            while (prev->next->val <= curr->val) {
                prev = prev->next;
            }
            lastSorted->next = curr->next;
            curr->next = prev->next;
            prev->next = curr;
        }
        curr = lastSorted->next;
    }
    return dummyHead->next;
}
相关推荐
q275513004213 小时前
AS717 Type-C转DP 8K方案外维少 AS717电路图
c语言·开发语言
自然常数e14 小时前
顺序表专题
c语言·数据结构·visual studio
j7~15 小时前
【数据结构初阶】队列的实现(链式队列 + 循环队列)--详解
c语言·开发语言·数据结构·学习·队列·queue·c\c++
草莓熊Lotso15 小时前
【Linux网络】深入理解Linux IO多路复用:select服务器完善、内核原理与poll实战
linux·运维·服务器·c语言·网络·c++
king_linlin15 小时前
算法基础——算法复杂度
c语言·开发语言·数据结构·算法
xxwxx__15 小时前
51单片机电机控制全攻略:直流电机、舵机与步进电机
c语言·单片机·嵌入式硬件·51单片机
king_linlin16 小时前
数据结构——顺序表(附图文讲解|超详细)
c语言·数据结构·算法
2601_954526751 天前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
qq_448011161 天前
C语言中的变量和函数的定义与声明
android·c语言·开发语言
aaaameliaaa1 天前
指针之总结
c语言·笔记·算法