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;
}
相关推荐
Chenyu_3101 小时前
12.找到字符串中所有字母异位词
c语言·数据结构·算法·哈希算法
门前云梦3 小时前
《C语言·源初法典》---C语言基础(上)
c语言·开发语言·学习
SY师弟4 小时前
51单片机——计分器
c语言·c++·单片机·嵌入式硬件·51单片机·嵌入式
keepquietl5 小时前
MQTT示例体验(C)
c语言·开发语言
编程绿豆侠6 小时前
力扣HOT100之栈:394. 字符串解码
java·算法·leetcode
Wangshanjie_986 小时前
【C语言】-递归
c语言
记得早睡~6 小时前
leetcode73-矩阵置零
数据结构·leetcode·矩阵
爱coding的橙子7 小时前
每日算法刷题Day27 6.9:leetcode二分答案2道题,用时1h20min
算法·leetcode·职场和发展
CodeWithMe9 小时前
【C/C++】高效的位操作
c语言·c++