题目讲解15 合并两个排序的链表

原题链接:

合并两个排序的链表_牛客题霸_牛客网

思路分析:

第一步:写一个链表尾插数据的方法。

typedef struct ListNode ListNode;//申请结点
ListNode* BuyNode(int x)
{ListNode* node = (ListNode*)malloc(sizeof(ListNode));node->val = x;node->next = NULL;return node;
}//尾插
void ListPushBack(ListNode** pphead, int x)
{ListNode* NewNode = BuyNode(x);if(*pphead == NULL){*pphead = NewNode;}else {ListNode* pcur = *pphead;while(pcur->next){pcur = pcur->next;}pcur->next = NewNode;}
}

第二步:创建三个链表结点。l1 用来遍历链表1,l2用来遍历链表2,RetList 是返回链表。 

ListNode* RetList = NULL, *l1 = pHead1, *l2 = pHead2;

第三步:进行遍历判断。如果 l1 结点里的值小于 l2 结点里的值,就把 l1 结点里的值尾插到返回链表。反之,就把 l2 结点里是值尾插到返回链表。

    while(l1 && l2){if(l1->val < l2->val){ListPushBack(&RetList, l1->val);l1 = l1->next;}else{ListPushBack(&RetList, l2->val);l2 = l2->next;}}

循环之前:

第一次循环之后:

 

第二次循环之后:

第三次循环之后:

 第四次循环之后:

第五次循环之后:

 

如果 l1 或者 l2 遍历到 NULL 的时候,会有一方没有完全遍历完所有结点,所以我们还需要补上两个循环去遍历完 l1 或者 l2。

    while(l1){ListPushBack(&RetList, l1->val);l1 = l1->next;}while(l2){ListPushBack(&RetList, l2->val);l2 = l2->next;}return RetList;

完整代码:

struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) 
{ListNode* RetList = NULL, *l1 = pHead1, *l2 = pHead2;while(l1 && l2){if(l1->val < l2->val){ListPushBack(&RetList, l1->val);l1 = l1->next;}else{ListPushBack(&RetList, l2->val);l2 = l2->next;}}while(l1){ListPushBack(&RetList, l1->val);l1 = l1->next;}while(l2){ListPushBack(&RetList, l2->val);l2 = l2->next;}return RetList;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【freertos】FreeRTOS任务管理

FreeRTOS任务管理 一、任务的创建和删除1、函数xTaskCreate2、函数xTaskCreateStatic3、函数xTaskCreateRestricted4、函数vTaskDelete 二、任务的挂起和恢复1、函数vTaskSuspend2、函数vTaskResume3、函数vTaskResumeFromISR4、函数vTaskSuspendAll5、函数xTaskResumeAll 三、…

FreeRTOS 20:互斥量(互斥信号量)操作

互斥信号量其实就是一个拥有优先级继承的二值信号量&#xff0c;在同步的应用中&#xff08;任务与任务或中断与任务之间的同步&#xff09;二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一把钥匙&#xff0c; 当任务想要访问共…

MongoDB笔记03-MongoDB索引

文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree&#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索…

肿瘤治疗评价指标太多?一文帮你梳理清楚!|个人观点·24-11-09

小罗碎碎念 如何延长癌症患者存活时间、提高生存质量、减轻肿瘤带来的痛苦&#xff0c;是评价抗癌药物的重要标准&#xff0c;而把这些标准落在数据上就诞生了各项“评价指标”。 在肿瘤治疗领域&#xff0c;有OS、PFS、RFS、TTP、TTF、ORR、DCR、DDC等各项评价指标。对于大部…

保研考研机试攻略:python笔记(3)

&#x1f428;&#x1f428;&#x1f428;11sort 与 sorted 区别 sort 是应用在 list 上的方法&#xff0c;sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作&#xff0c; 无返回值&#xff0c;而内建函数 sorted 方法返回的…

Linux之自定义shell和C标准库函数

自定义shell和C标准库函数 一.自定义xshell1.1main函数主体1.2获取用户信息以及命令串1.3判断命令串是否为空串1.4判断是否为重定向1.5分割命令串1.6判断是否为内建命令1.7执行命令 二.自定义C标准库函数2.1mystdio.h2.2mystdio.c2.3main.c 一.自定义xshell 1.1main函数主体 1…

TeamTalk知识点梳理一(单聊)

文章目录 db_proxy_serverdb_proxy_server reactor响应处理流程连接池redis连接池MySQL连接池 单聊消息消息如何封装&#xff1f;如何保证对端完整解析一帧消息&#xff1f;协议格式&#xff1f;单聊消息流转流程消息序号&#xff08;msg_id &#xff09;为什么使用redis生成&a…

带跳转功能的电子产品目录如何制作?

​在数字化时代&#xff0c;电子产品已成为我们生活和工作中不可或缺的伙伴。为了方便用户快速查找所需产品&#xff0c;带跳转功能的电子产品目录应运而生。本文将详细介绍如何制作一个高效便捷的带跳转功能电子产品目录&#xff0c;让用户轻松实现产品查找、筛选和购买。 1.要…

从0开始linux(26)——动静态库

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 如何写一个静态库动态库动静态链接 c/c程序形成可执行程序&#xff0c;需要经过三个步骤&#xff0c;编译、汇编、链接三个步骤&#xff0c;我们之前做链接时&#xff0c;使用的方法是将头文件…

hexo 搭建个人博客网站

hexo搭建个人博客 文章目录 hexo搭建个人博客摘要搭建网站的前置工具WebStormHexo Hexo配置初始化本地运行 主题更改安装butterfly主题 正式上线GitHub Pages配置新建仓库SSH密钥配置 将hexo部署到GitHub 个性化设置后续网站更新内容分类和标签设置分类&#xff08;categories&…

BLDC基础知识复习【二】

如果采用20毫欧的电流采样电阻&#xff0c;10A的电流计算出来时0.2V&#xff0c;这个显然还是太小了&#xff0c;需要运放放大并且加上偏置&#xff1a; 6组换向程序&#xff1a; 最核心的控制逻辑在这里&#xff1a;在main.c里面对PWM占空比进行设置&#xff0c;通过一个指针在…

1130 - Host ‘10.0.0.1‘ is not allowed to connect to this MySQL server

1130 - Host 10.0.0.1 is not allowed to connect to this MySQL server 一、1130 - Host 10.0.0.1 is not allowed to connect to this MySQL server二、1130 - Host 10.0.0.1 is not allowed to connect to this MariaDB serverendl 一、1130 - Host ‘10.0.0.1’ is not all…

构建智慧城市:数字孪生技术的发展之路

基于数字孪生的智慧城市发展是一种革命性的城市转型模式&#xff0c;旨在将物理世界与数字世界融合&#xff0c;在数字平台上建立城市的虚拟映像&#xff0c;从而实现对城市运行状态、资源利用、环境影响等方面的综合管理和优化。这种发展模式将数字技术深度融入城市规划、建设…

金融行业信息流投放方法论及金融客户投放案例

失血2024&#xff0c;金融行业进入“极寒”&#xff0c;广告投放也不例外。 受金融政策管控&#xff0c;在渠道投放受限也颇多&#xff0c;创意文案及素材上审核异常严格&#xff0c;整体投放成本高…… 金融理财信息流广告投放&#xff0c;如带着“镣铐”跳舞&#xff0c;束…

Unity-Yaml-Dot-Net诗歌篇-如何像雷总学习写代码像诗歌-MVC 框架,+注入Inject +状态机生命周期

我们是否可以像雷总一样 大家都说他的代码&#xff0c;像诗一样优雅 一个MVC 框架&#xff0c;加注入 &#xff08;以下内容其实和雷总没什么关系&#xff0c;也和雷总当年代码毫无关系&#xff0c;不过先“阅读理解”一下&#xff09; 雷总-写的代码像似一个优雅??!!^^ R…

安卓好软-----电脑端查看apk全部信息的工具 查看包名 名称以及权限等等

有时候从网络下载的应用很多是英文。时间久了会忘记到底是什么apk应用。这款工具可以方便的查看apk应用的名称 包名以及各种权限 图标 大小版本号等等。方便用户随时查看 APK Helper能够详细地获得安装包名、软件名称、APK证书、真实版本号、要求的手机版本、系统权限、以及证书…

分布式唯一ID生成(四):tinyid

文章目录 本系列前言号段模式多DB支持tinyid-client 本系列 漫谈分布式唯一ID分布式唯一ID生成&#xff08;二&#xff09;&#xff1a;leaf分布式唯一ID生成&#xff08;三&#xff09;&#xff1a;uid-generator分布式唯一ID生成&#xff08;四&#xff09;&#xff1a;tiny…

JavaWeb:文件上传2

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

April tag坐标定义

朝右的方向为x轴正向&#xff0c; 朝下的方向为y轴正方向&#xff0c; z 轴垂直纸面向里。 4个角点的坐标定义如下图所示。

江行智能×图扑软件:输煤皮带数字孪生管控系统

在现代矿业和电力行业中&#xff0c;输煤皮带系统是运输环节的核心。然后&#xff0c;随着智能化生产的高要求&#xff0c;智慧矿山输煤皮带系统的传统管理模式已显得力不从心。产业引入的三维可视化和数字孪生技术&#xff0c;一改传统输煤皮带系统由于设备老化、管理不善等原…