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;
}
相关推荐
深盾科技2 小时前
C/C++逆向分析实战:变量的奥秘与安全防护
c语言·c++·安全
奔跑吧邓邓子8 小时前
【C语言实战(8)】C语言循环结构(do-while):解锁编程新境界
c语言·实战·do-while
小莞尔8 小时前
【51单片机】【protues仿真】基于51单片机温度测量系统
c语言·单片机·嵌入式硬件·物联网·51单片机
晓风凌殇8 小时前
单片机按键检测与长短按识别实现
c语言·单片机
Lris-KK9 小时前
力扣Hot100--94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历
python·算法·leetcode
坚持编程的菜鸟10 小时前
LeetCode每日一题——螺旋矩阵
c语言·算法·leetcode·矩阵
(●—●)橘子……10 小时前
记力扣2009:使数组连续的最少操作数 练习理解
数据结构·python·算法·leetcode
GalaxyPokemon10 小时前
LeetCode - 1171.
算法·leetcode·链表
iナナ10 小时前
Java优选算法——位运算
java·数据结构·算法·leetcode
机器视觉知识推荐、就业指导11 小时前
C语言中的预编译是什么?何时需要预编译?
c语言·开发语言