合并有序链表---链表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;
}
相关推荐
難釋懷7 小时前
Redis数据结构-Set结构
数据结构·redis·bootstrap
如何原谅奋力过但无声9 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠9 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
,,?!,12 小时前
数据结构算法-排序算法
数据结构·算法·排序算法
‎ദ്ദിᵔ.˛.ᵔ₎13 小时前
C++哈希表
数据结构·c++·散列表
阿旭超级学得完14 小时前
C++11(初始化)
java·开发语言·数据结构·c++·算法
云淡风轻~窗明几净14 小时前
关于角谷猜想的五行小猜想
数据结构·算法
Languorous.15 小时前
C++数据结构进阶|并查集(Union-Find)详解:从原理到面试实战
数据结构·c++·面试
Languorous.15 小时前
C++数据结构进阶|堆(Heap)详解:从手写实现到面试高频实战
数据结构·c++·面试
玛卡巴卡ldf16 小时前
【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形
java·数据结构·算法·leetcode·力扣