合并有序链表---链表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;
}
相关推荐
么么...27 分钟前
布隆过滤器详解:原理、实现与应用
java·数据结构·哈希算法·散列表
Sheep Shaun43 分钟前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
tobias.b1 小时前
408真题解析-2010-3-数据结构-线索二叉树
数据结构·链表·计算机考研·408真题解析
tobias.b1 小时前
408真题解析-2010-2-数据结构-双端队列
数据结构·计算机考研·408真题解析
旭意1 小时前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯
宵时待雨1 小时前
数据结构(初阶)笔记归纳7:链表OJ
c语言·开发语言·数据结构·笔记·算法·链表
充值修改昵称1 小时前
数据结构基础:堆高效数据结构全面解析
数据结构·python·算法
好奇龙猫1 小时前
【大学院-筆記試験練習:线性代数和数据结构(15)】
数据结构·线性代数
无心水1 小时前
8、吃透Go语言container包:链表(List)与环(Ring)的核心原理+避坑指南
java·开发语言·链表·微服务·架构·golang·list
mjhcsp1 小时前
P14977 [USACO26JAN1] Lineup Queries S(题解)
数据结构·c++·算法