C语言每日一题(29)合并两个有序链表

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

题目描述

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

示例

思路分析

最基本的一种思路就是,遍历两个链表,将对应结点的值进行比较,题目要求是要升序排序,即较小的值先排在前面,随后所在链表的较小结点先走,将后面的值于第二个链表的结点进行比较,即谁小谁先排,谁小谁先动,直到有一个指针遍历为空为止。

需要注意的是:

会存在比较存放完后,其中一个链表会有剩余,此时不需要再进行比较,直接进行存放即可。

完整代码

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
    struct ListNode* newhead=(struct ListNode*)malloc(sizeof(struct ListNode));//哨兵位
    struct ListNode* cur1=list1,*cur2=list2;//避免头结点丢失,使用两个指针代替遍历
    struct ListNode* tail=newhead;//哨兵位结点同样如此
    while(cur1&&cur2)//任意一方为空停止
    {
        if(cur1->val>cur2->val)//1大于2的情况
        {
            tail->next=cur2;//哨兵位不存放有效值,从它的下一个结点开始存放。
            cur2=cur2->next;
            tail=tail->next;
        }
        else//1小于2的情况
        {
            tail->next=cur1;
            tail=tail->next;
            cur1=cur1->next;
        }
    }
    if(cur1==NULL)//判断是否存在任一链表有剩余的情况,直接存放即可
    {
        while(cur2)
        {
            tail->next=cur2;
            cur2=cur2->next;
            tail=tail->next;
        }
    }
    else
    {
        while(cur1)
        {
            tail->next=cur1;
            cur1=cur1->next;
            tail=tail->next;
        }
    }
    tail->next=NULL;//存放完后tail记得置空(否则为野指针)
    struct ListNode* ans=newhead->next;//动态申请的内存空间一定要释放,否则会造成内存泄漏
    free(newhead);
    return ans;

}

实现细节

这里避免使用头结点而采用一个不存放有效值的结点当作哨兵位,就不用考虑头结点为空的情况而是直接存放。

动态申请的内存空间不要忘记释放。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/148671.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot单体项目部署

配置类 检查跨域配置类 检查黑白名单是否有问题,是否需要更改 配置文件 检查端口 查看端口是否为需要搭建的端口 检查数据源 查看数据库是否为线上数据库 配置页面 注意:如果是单体项目的话,前端页面是和后端整合在一起的&#xff0…

测试用例的书写方式以及测试模板大全

一个优秀的测试用例,应该包含以下信息: 1 ) 软件或项目的名称 2 ) 软件或项目的版本(内部版本号) 3 ) 功能模块名 4 ) 测试用例的简单描述,即该用例执行的目的或方法…

如何创建标准操作规程(SOP)[+模板]

创建、分发和管理流程文档和逐步说明的能力是确定企业成功的关键因素。许多组织依赖标准操作规程(SOP)作为基本形式的文档,指导他们的工作流程操作。 然而,SOP不仅仅是操作路线图;它们就像高性能车辆中的先进GPS系统一…

LinkedHashMap源码分析

类结构图 从类图结构可以看出,LinkedHashMap继承自HashMap,里面很多实现都是HashMap的,这篇文章主要写出LinkedHashMap自实现的那部分 Entry LinkedHashMap的每个元素项都是一个Entry类对象,该类继承自HashMap.Node类 static c…

【missing-semester】The shell

文章目录 shell 是什么shell 怎么用执行基本程序 Shell中的路径重定向输入输出管道piperoot用户的使用课后练习参考资料 我的操作环境:Windows11下的WSL2(Ubuntu20.04),之后的所有操作都是基于这个前提的 shell 是什么 命令行操作语言,文本界…

pycharm安装库失败

项目场景 pycharm安装第三方库 问题描述 python 安装第三方库总是安装失败 原因分析: 提示:这里填写问题的分析: 1.网络 2.网墙 解决方案: 加个镜像 –trusted-host mirrors.aliyun.com

【EI会议征稿】第四届信息化经济发展与管理国际学术会议(IEDM 2024)

第四届信息化经济发展与管理国际学术会议(IEDM 2024) 2024 4th International Conference on Informatization Economic Development and Management 第四届信息化经济发展与管理国际学术会议(IEDM 2024)将于2024年2月23-25日在…

C++ opencv基本用法【学习笔记(九)】

这篇博客为修改过后的转载,因为没有转载链接,所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基…

现货黄金职业交易员怎么使用技术分析?

职业的交易员每天要处理很多不同的信息,其中只一部分是涉及技术指标。在这一部分处理技术分析的时间里,只能再分出少之又少的时间给技术指标。那职业交易员会利用做技术指标做什么呢?下面我们就来讨论一下。 识别行情。技术指标的主要作用就是…

TikTok女性创作者:媒体世界的新领袖

在数字时代,社交媒体已成为媒体和娱乐产业的关键组成部分,而TikTok作为最受欢迎的短视频分享平台之一,为女性创作者提供了一个独特的机会来在媒体世界中崭露头角。 这个平台不仅为女性创作者提供了一个创作和分享自己的声音、观点和创意的空…

(三)什么是Vite——Vite 主体流程(运行npm run dev后发生了什么?)

什么是vite系列目录: (一)什么是Vite——vite介绍与使用-CSDN博客 (二)什么是Vite——Vite 和 Webpack 区别(冷启动)-CSDN博客 (三)什么是Vite——Vite 主体流程(运行npm run dev…

江西产业链现代化1269行动计划引领新能源建设与职业教育教学改革的深度融合

江西产业链现代化1269行动计划引领新能源建设与职业教育教学改革的深度融合 在全球能源转型的时代背景下,江西省积极应对挑战,提出了产业链现代化1269行动计划。这一计划不仅着眼于推动新能源建设,还将新能源建设与职业教育教学改革紧密结合…

Axure9 基本操作(二)

1. 文本框、文本域 文本框:快速实现提示文字与不同类型文字显示的效果。 2. 下拉列表、列表框 下拉列表:快速实现下拉框及默认显示项的效果。 3. 复选框、单选按钮 4.

零成本体验美国云服务器,更方便的体验和选择

在当今数字化时代,云计算已经成为了企业和个人的首选。而美国云服务器免费试用,则为广大用户提供了一个零风险尝试的机会。作为一种高效、灵活、稳定的解决方案,美国云服务器可以为您的业务保驾护航。 什么是美国云服务器? 美国云…

掌握AI图像篡改检测工具,轻松识别图片造假

文章目录 一、前言1.1 背景与危害1.2会议探讨1.3 技术先行 二、亮点技术1:AI图像篡改检测技术2.1 传统方法Python实现步骤2.2 合合信息——PS纂改检测体验 三、亮点技术2:生成式图像鉴别3.1 生成式图像安全问题3.2 传统方法Python实现步骤3.2 合合信息—…

《Linux从练气到飞升》No.27 Linux中的线程互斥

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

小DEMO:在vue中自定义range组件

1、组件样式 2、使用 import cSlider from /components/c-slider/c-slider.vue<div class"range"><cSlider v-model"cScale" change"cScaleChange" :min"1" :max"10"/> </div> 3、组件代码 <templa…

5+单基因+免疫浸润,这篇肿瘤预后文章你值得拥有

今天给同学们分享一篇生信文章“Systematic analysis of the role of SLC52A2 in multiple human cancers”&#xff0c;这篇文章发表在Cancer Cell Int期刊上&#xff0c;影响因子为5.8。 结果解读&#xff1a; 多种人类癌症中SLC52A2的mRNA表达 首先&#xff0c;作者使用GT…

virtualbox基本配置

全屏模式调出热键 右边的 ctrl home 键 安装增强功能 注意&#xff1a;virtualbox 自带那个安装增强功能点击后是没有效果的 1、启动虚拟机 2、设备 3、分配虚拟光驱 4、选择虚拟盘 5、选择对应iso文件&#xff0c;文件下载路径 6、双击对应文件安装&#xff0c;默认配置…

多区域OSPF配置

配置命令步骤&#xff1a; 1.使用router ospf 进程ID编号 启用OSPF路由 2.使用network 直连网络地址 反掩码 area 区域号 将其归于对应区域 注意&#xff1a; 1.进程ID编号可任意&#xff08;1-65535&#xff09; 2.反掩码用4个255相减得到 3.area 0 为主干区域 4.连接不…