当前位置: 首页 > news >正文

用尾插的思路实现 “合并两个有序链表”

一、题目

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

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非递减顺序 排列

二、思路

1.类比数组的合并,遍历两个链表所有节点。

2.建立tail指针与newhead指针,完成节点“插入”

三、代码

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {//链表本身就可能为空!!! 一定不可省略!!!if(list1 == NULL)return list2;else if(list2 == NULL)return list1;struct ListNode* cur1 = list1;struct ListNode* cur2 = list2;struct ListNode* newhead = NULL;  struct ListNode* tail = NULL;  while(cur1 && cur2){    if(cur1->val <= cur2->val){if(newhead == NULL){newhead = tail = cur1;}else{tail->next = cur1;tail = tail->next;}cur1 = cur1->next;}else{if(newhead == NULL){newhead = tail = cur2;}else{tail->next = cur2;tail = tail->next;}cur2 = cur2->next;}}//跳出循环,意味着某个链表结束if(cur2)    //cur1 为空,cur2不能为空!tail->next = cur2;else if(cur1)tail->next = cur1;return newhead;
}

四、注意点

1.跳出循环,一定意味着某个链表结束

2.if(cur2)   //如果cur2不会空

要去判断谁不为空,而不是谁为空!

3.tail指针是尾插新链表的尾节点,在逻辑上,tail指针落后于 或者 齐平于cur指针!

五、注:

若想更深入了解尾插的应用及内涵,见此链接

用尾插的思想实现移除链表中的元素-CSDN博客

http://www.lryc.cn/news/319747.html

相关文章:

  • 大数据 - Spark系列《十四》- spark集群部署模式
  • 考研C语言复习进阶(2)
  • 设计模式学习笔记 - 设计原则与思想总结:1.总结回顾面向对象、设计原则、编程规范、重构技巧等知识点
  • WPF图表库LiveCharts的使用
  • 第十三届蓝桥杯省赛C++ C组《全题目+题解》
  • Linux——线程池
  • Linux:搭建ntp服务器
  • unity学习(57)——选择角色界面--删除角色2
  • Flutter:构建美观应用的跨平台方案
  • 【深度学习模型移植】用torch普通算子组合替代torch.einsum方法
  • 鸿蒙 Harmony 初体验
  • Jmeter+ant,ant安装与配置
  • 【MySQL基础】MySQL基础操作三
  • 【K8s】肿么办??Kubernetes Secrets并不是Secret哟!!
  • 数星星 刷题笔记 (树状数组)
  • Windows→Linux,本地同步到服务器
  • Pycharm连接远程服务器Anoconda中的虚拟环境
  • 无人机自动返航算法实现与优化
  • 切面条-蓝桥杯?-Lua 中文代码解题第1题
  • WebRTC:真正了解 RTP 和 RTCP
  • vue实现双向绑定原理深度解析
  • C语言 —— memeove函数的模拟实现
  • <el-tab>样式自定义——一个可以触类旁通的小例子
  • XDP学习笔记
  • JavaScript进阶:js的一些学习笔记-4
  • 【可能是全网最丝滑的LangChain教程】三、快速入门LLMChain
  • Oracle Primavera Analytics 是什么,与P6的关系?
  • 在 Amazon Bedrock 上使用 Anthropic Claude 系统 Prompt
  • 【LeetCode】动态规划--题目练习
  • 【LeetCode热题100】101. 对称二叉树(二叉树)