合并两个有序链表(每日一题)

"路虽远,行则将至"

❤️主页:************小赛毛****************

☕今日份刷题:合并两个有序链表

题目描述:

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例1:

cpp 复制代码
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例2:

cpp 复制代码
输入:l1 = [], l2 = []
输出:[]

示例3:

cpp 复制代码
输入:l1 = [], l2 = [0]
输出:[0]

题目分析:

这题可太经典了,直接取小的尾插

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    if(list1 == NULL)
    {
        return list2;
    }
    if(list2 == NULL)
    {
        return list1;
    }
    struct ListNode* head = NULL,*tail = NULL;
    while(list1 && list2)
    {
        //取小的尾插
        if(list1->val < list2->val)
        {
            if(tail == NULL)
            {
                head = tail = list1;
            }
            else
            {
                tail->next = list1;
                tail = tail->next;
            }
            list1 = list1->next;
        }
        else
        {
           
            if(tail == NULL)
            {
                head = tail = list2;
            }
            else
            {
                tail->next = list2;
                tail = tail->next;
            }
            list2 = list2->next;
        }
    }
    if(list1)
    {
        tail->next = list1;
    }
    if(list2)
    {
        tail->next = list2;
    }
    return head;
}
相关推荐
Book思议-5 小时前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
是苏浙7 小时前
初识集合框架
java·数据结构
如何原谅奋力过但无声7 小时前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
小王C语言9 小时前
【基础IO】————简单设计一下libc库
前端·数据结构·算法
_日拱一卒9 小时前
LeetCode:滑动窗口的最大值
数据结构·算法·leetcode
老约家的可汗9 小时前
list 容器详解:基本介绍与常见使用
c语言·数据结构·c++·list
Book思议-9 小时前
【数据结构】字符串模式匹配:暴力算法与 KMP 算法实现与解析
数据结构·算法·kmp算法·bf算法
mifengxing10 小时前
力扣HOT100——(1)两数之和
java·数据结构·算法·leetcode·hot100
罗湖老棍子10 小时前
【 例 1】区间和(信息学奥赛一本通- P1547)(基础线段树和单点修改区间查询树状数组模版)
数据结构·算法·线段树·树状数组·单点修改 区间查询
Book思议-10 小时前
【数据结构】栈与队列核心对比
数据结构·栈与队列对比