C语言 | Leetcode C语言题解之第21题合并两个有序链表

这篇具有很好参考价值的文章主要介绍了C语言 | Leetcode C语言题解之第21题合并两个有序链表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

C语言 | Leetcode C语言题解之第21题合并两个有序链表,分享,C语言,Leetcode,题解

题解:文章来源地址https://www.toymoban.com/news/detail-848576.html

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 typedef struct ListNode ListNode;
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    //如果List1和list2中有一个为空就直接返回另一个链表
    if(list1 == NULL)
    {
        return list2;
    }
    if(list2 == NULL)
    {
        return list1;
    }
    //定义l1,l2指针分别指向list1和list2的头节点
    ListNode* l1, *l2;
    ListNode* newhead, *newtail;
    //给新链表的开辟一个哨兵位
    newhead = newtail = (ListNode*)malloc(sizeof(ListNode));
    l1 = list1,l2 = list2;
    while(l1 && l2)
    {
        if(l1->val <= l2->val)
        { 
            newtail->next = l1;
            newtail = newtail->next;
            l1 = l1->next;
        }
        else
        {
            
            newtail->next = l2;
            newtail = newtail->next;
            l2 = l2->next;
        }
    }
    if(l1)
    {
        newtail->next = l1;
    }
    if(l2)
    {
        newtail->next = l2;
    }
    //新链表的第一个节点是头节点为无效数据,因此返回头节点的next
    return newhead->next;
}

到了这里,关于C语言 | Leetcode C语言题解之第21题合并两个有序链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表

    LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表

    54. 螺旋矩阵 https://leetcode.cn/problems/spiral-matrix/ 题目要求:  思路:一定要 先找好边界 。如下图 ,上边界是1234,右边界是8、12,下边界是9、10、11,左边界是5,所以可以确定四个边界所包含的值。然后再 循环一层一层往里进入 ,比如添加完上边界1234后,上边界就需要+1,

    2024年02月12日
    浏览(12)
  • 21.合并两个有序链表

    21.合并两个有序链表

    一、思路 二、源码 创建一个新链表 两个链表比较,小于等于取下来尾插 循环结束条件为任意一个链表为空 最后将之剩下的链表直接尾插

    2024年01月23日
    浏览(7)
  • 21. 合并两个有序链表

    21. 合并两个有序链表

     

    2024年02月12日
    浏览(8)
  • 合并两个有序链表——力扣21

    合并两个有序链表——力扣21

    题目描述 法一 递归

    2024年02月15日
    浏览(9)
  • 力扣21. 合并两个有序链表

    力扣21. 合并两个有序链表

    题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  链接:21. 合并两个有序链表 - 力扣(LeetCode) 题解 设置两个指针head和tail,head用来指向新链表的头结点,tail用来进行新链表的尾插。比较两个链表,取较小的结

    2024年02月16日
    浏览(18)
  • 【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表

    【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表

    简单 相关标签 相关企业 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 示例 2: 示例 3: 提示: 两个链表的节点数目范围是 [0, 50] -100 = Node.val = 100 l1 和 l2 均按 非递减顺序 排列 拉拉链法 两个链表就相当于

    2024年03月12日
    浏览(19)
  • 第21关:基于链表的两个递增有序序列的合并

    第21关:基于链表的两个递增有序序列的合并

    任务描述 本关任务:给定两个递增的整数序列A和B,利用链表表示序列A和B,将A和B合并为一个递增的有序序列C,序列C不允许有重复的数据。要求空间复杂度为O(1)。 编程要求 输入 多组数据,每组数据有三行,第一行为序列A和B的长度n和m,第二行为序列A的n个元素,第三行为

    2024年02月05日
    浏览(9)
  • Leetcode算法递归类—合并两个有序链表

    Leetcode算法递归类—合并两个有序链表

    目录 21. 合并两个有序链表 题解: 代码: 将两个升序链表合并为一个新的  升序  链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例 1: 示例 2: 示例 3: 提示: 两个链表的节点数目范围是  [0, 50] -100 = Node.val = 100 l1  和  l2  均按  非递减顺序  

    2024年02月13日
    浏览(10)
  • 【Leetcode刷题】链表的中间结点和合并两个有序链表

    【Leetcode刷题】链表的中间结点和合并两个有序链表

    生命如同寓言,其价值不在与长短,而在与内容。                                ——塞涅卡 目录 一.链表的中间结点 1.快慢指针 二.合并两个有序链表  1.尾插法 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点

    2023年04月17日
    浏览(17)
  • LeetCode150道面试经典题-- 合并两个有序链表(简单)

    LeetCode150道面试经典题-- 合并两个有序链表(简单)

    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。  示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4]    示例 2: 输入:l1 = [], l2 = [] 输出:[] 示例 3:   输入:l1 = [], l2 = [0] 输出:[0] 递归调用 将这个问题不断拆分

    2024年02月12日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包