合并有序链表---链表OJ---归并思想

https://leetcode.cn/problems/merge-two-sorted-lists/?envType=study-plan-v2&envId=top-100-liked

将两个有序的链表合并为一个新的有序链表,那不就是和归并排序中最后合并的思想一样吗?只不过那里合并的是数组,这里合并的是链表。

首先:如果有一个链表为空,那就直接返回另一个链表。

同样,如果都为空,就返回NULL。

同归并类似,如果合并过程中,有一个链表合并完成后,就将另一个链表的剩余部分全部接在最终链表的后面。

cpp 复制代码
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    if (list1 == NULL)
        return list2;
    if (list2 == NULL)
        return list1;

    struct ListNode* head; //创建头结点
    if (list1->val < list2->val) {
        head = list1;
        list1 = list1->next;
    } else {
        head = list2;
        list2 = list2->next;
    }
    struct ListNode* tmp = head; //用tmp来链接
    while (list1 && list2) {
        if (list1->val < list2->val) {
            tmp->next = list1;
            list1 = list1->next;
            tmp = tmp->next;
        } else {
            tmp->next = list2;
            list2 = list2->next;
            tmp = tmp->next;
        }
    }
    if (list1 == NULL) {
        tmp->next = list2;
    }
    if (list2 == NULL) {
        tmp->next = list1;
    }
    return head;
}
相关推荐
Fanxt_Ja1 天前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
今后1231 天前
【数据结构】二叉树的概念
数据结构·二叉树
散1122 天前
01数据结构-01背包问题
数据结构
消失的旧时光-19432 天前
Kotlinx.serialization 使用讲解
android·数据结构·android jetpack
Gu_shiwww2 天前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
苏小瀚2 天前
[数据结构] 排序
数据结构
_不会dp不改名_2 天前
leetcode_21 合并两个有序链表
算法·leetcode·链表
睡不醒的kun2 天前
leetcode算法刷题的第三十四天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
吃着火锅x唱着歌2 天前
LeetCode 978.最长湍流子数组
数据结构·算法·leetcode
Whisper_long2 天前
【数据结构】深入理解堆:概念、应用与实现
数据结构