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;
}
相关推荐
夏鹏今天学习了吗7 小时前
【LeetCode热题100(82/100)】单词拆分
算法·leetcode·职场和发展
時肆4858 小时前
C语言造轮子大赛:从零构建核心组件
c语言·开发语言
踩坑记录9 小时前
leetcode hot100 189.轮转数组 medium
leetcode
xingzhemengyou110 小时前
C语言 查找一个字符在字符串中第i次出现的位置
c语言·算法
Dream it possible!10 小时前
LeetCode 面试经典 150_二分查找_在排序数组中查找元素的第一个和最后一个位置(115_34_C++_中等)
c++·leetcode·面试
黎雁·泠崖12 小时前
吃透Java操作符进阶:算术+移位操作符 全解析(Java&C区别+完整案例+避坑指南)
java·c语言·python
菜鸟233号13 小时前
力扣377 组合总和 Ⅳ java实现
java·数据结构·算法·leetcode
我是大咖13 小时前
二级指针与指针数组搭配
c语言·数据结构·算法
iYun在学C13 小时前
驱动程序开发(字符设备驱动框架实验)
linux·c语言·嵌入式硬件
老鼠只爱大米13 小时前
LeetCode算法题详解 189:轮转数组
leetcode·轮转数组·数组旋转·环状替换法·算法面试题