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;}

实现细节

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二部图问题

目录 一、介绍 二、染色算法的实现 三、无权二部图中的最大匹配 四、有权二部图中的最大匹配 五、稳定婚配问题 一、介绍 二部图是一种特殊的图,其中所有的节点可以被分成两个不相交的集合,使得图中的每条边连接的两个节点分属于不同的集合。换句话…

什么是GIL锁,有什么作用?python的垃圾回收机制是什么样的?解释为什么计算密集型用多进程,io密集型用多线程。

1 什么是gil锁,有什么作用? 2 python的垃圾回收机制是什么样的? 3 解释为什么计算密集型用多进程,io密集型用多线程。 1 什么是gil锁,有什么作用? 1 GIL:Global Interpreter Lock又称全局解释器…

基于安卓android微信小程序的食谱大全系统

项目介绍 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对食谱大全进行需求分析,得出食谱大全主要功能。接着对食谱大全进行总体设计和详细设计。总体设…

源码升级gcc

wget https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gztar -xzf gcc-8.1.0.tar.gzcd gcc-8.1.0/打开/contrib/download_prerequisites,查看依赖的库 wget http://mirror.linux-ia64.org/gnu/gcc/infrastructure/mpfr-3.1.4.tar.bz2 & wget http://mir…

实现高值医疗耗材智能化管理的RFID医疗柜解决方案

一、行业背景 医疗物资管理面临着一系列问题,如高值耗材种类激增导致准入标准弱化、信息追踪困难、管理责任不明确等,医院内部设备、财务和临床科室相互独立,兼容性不佳,高值耗材储备不足,缺乏合理的预警机制&#xf…

Java 21:最新特性、性能改进和语言发展

文章目录 模式匹配和模式变量新的记录类型生产者接口本地类型推断的扩展新的垃圾收集器动态CDS档案G1垃圾收集器的增强Java语言的持续发展性能改进和JEPJava 21的部署和使用Java 21的生态系统结语 🎉欢迎来到Java学习路线专栏~Java 21:最新特性、性能改进…

Postman接口Mock Servier服务器

近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 应用场景:后端的接口还没有开发完成,前端的业务需要调用后端的接口,可以使用mock模拟。 一…

Android高级实践分享

以下是我学习过程中,觉得比较好的Android进阶高级实践,分享给大家,可能有些东西差异化比较大了,但是我也想经过这些实践,踩踩坑。等我搞完,给大家出一下实践教程 Android进阶之旅: https://ww…

终于有人把VMware虚拟机三种网络模式讲清楚了!

前段时间VMware更新了,你用上最新版了吗? 有几个网工在操作中遇到过各种各样的问题。 比如说由于公司服务器重启导致出现下面的问题:在Xshell里连接虚拟机映射时连接失败;能够连接上虚拟机的映射地址,但git pull时报…

电子电机行业万界星空科技MES解决方案

现在电子电机行业规模越来越大,也伴随着生产和管理成本走向变高的现象。针对这个问题,mes系统就成为各电子电机制造业的最优选择。 电子机电行业MES涵盖了从原材料采购到最终产品交付的整个过程,包括生产计划、物料管理、生产过程监控、质量…

CleanMyMac X“断网激活”真的可以吗?

CleanMyMac X帮助Mac系统进行垃圾清理,清除多余的缓存、应用程序等,在提高工作效率上起了很大的作用。但是随着对软件的需求不断增加,很多人开始研究通过捷径破解正版软件,但是是否能成功呢?今天小编就为大家揭开“断网…

【常见SQL报错及解决办法】个人记录,自用

ORA-00942: 表或视图不存在 现象:明明已经新建了视图,并提交了,直接查询的时候还是报了这个错 解决:视图名那加双引号,与建立的时候保持一致 --SELECT * FROM VIEW_NAME 报错,需要加双引号 SELECT * FR…

7-爬虫-中间件和下载中间件(加代理,加请求头,加cookie)、scrapy集成selenium、源码去重规则(布隆过滤器)、分布式爬虫

0 持久化(pipelines.py)使用步骤 1 爬虫中间件和下载中间件 1.1 爬虫中间件(一般不用) 1.2 下载中间件(代理,加请求头,加cookie) 1.2.1 加请求头(加到请求对象中) 1.2.2 加cookie 1.2.3 加代理 2 scrapy集成selenium 3 源码去重…

C++ 动态规划 DP教程 (一)思考过程(*/ω\*)

动态规划是一种思维方法,大家首先要做的就是接受这种思维方法,认同他,然后再去运用它解决新问题。 动态规划是用递推的思路去解决问题。 首先确定问题做一件什么事情? 对这件事情分步完成,分成很多步。 如果我们把整件…

【SpringBoot】序列化和反序列化介绍

一、认识序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程;deserialization(反序列化)是一种将这些字节重建成一个对象的过程。将程序中的对象,放入文件中保存就是序列化&…

回顾 — SFA:简化快速 AlexNet(模糊分类)

模糊图像的样本 一、说明 在本文回顾了基于深度学习的模糊图像分类(SFA)。在本文中:Simplified-Fast-AlexNet (SFA)旨在对图像是否因散焦模糊、高斯模糊、雾霾模糊或运动模糊而模糊进行分类。 二、大纲 图像模糊建模简要概述简化快速 AlexNet…

vscode 快速打印console.log

第一步 输入这些 {// Print Selected Variabl 为自定义快捷键中需要使用的name,可以自行修改"Print Selected Variable": {"body": ["\nconsole.log("," %c $CLIPBOARD: ,"," background-color: #3756d4; padding:…

action3录制出来的LRF文件的正确打开方式

你会发现使用大疆的产品录制出来的视频会有两种格式:LRF和MP4 这个LRF文件是低分辨率、低码率的预览文件,非常适合预览。 这个文件可以直接通过修改文件后缀转化为.mp4格式

【R Error系列】r - fatal error : RcppEigen. h:没有这样的文件或目录

在头文件那要有 // [[Rcpp::depends(RcppEigen)]] 即&#xff1a; #include <Rcpp.h> #include <RcppEigen.h> using namespace Rcpp; using namespace Eigen;// [[Rcpp::depends(RcppEigen)]] // [[Rcpp::export]] 参考&#xff1a; r - fatal error: RcppEi…