题目描述:

输入两个单调递增的链表,输出两个链表合成后的链表,要求合成后的链表满足单调不减规则。

1、分析

已知输入的两个链表递增有序,要使输出的链表依然递增有序,可以依次从输入的两个链表中挑选最小的元素插入到输出的链表尾部,便可实现输出链表递增有序。

2、数据结构定义

struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};

3、递归实现

/*递归实现合并两个排序链表*/
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{if(pHead1 == NULL)return pHead2;if(pHead2 == NULL)return pHead1;if(pHead1->val < pHead2->val){pHead1->next = Merge(pHead1->next, pHead2);return pHead1;}else{pHead2->next = Merge(pHead1, pHead2->next);return pHead2;}
}

4、非递归实现:

/*非递归实现合并两个排序链表*/
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{ListNode *pHead = new ListNode(0);ListNode *p = pHead;while(pHead1 != NULL && pHead2 != NULL){if(pHead1->val < pHead2->val){p->next = pHead1;pHead1 = pHead1->next;}else{p->next = pHead2;pHead2 = pHead2->next;}p = p->next;}if(pHead1 != NULL){p->next = pHead1;}if(pHead2 != NULL){p->next = pHead2;}return pHead->next;
}

5、总结

这道题使对单链表操作比较经典的题目,无论是考研还是面试出现的概率都非常高。题目的思路较为简单,编码实现稍微难点,难度虽不大,但能考察编码基础功力和对单链表的深一层的理解,所以须熟练掌握。

转载于:https://www.cnblogs.com/evenleee/p/8505981.html

合并两个排序的链表递归和非递归C++实现相关推荐

  1. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

  2. LeetCode-剑指 Offer 25. 合并两个排序的链表

    剑指 Offer 25. 合并两个排序的链表 思路一:双指针法 1.设置dummy为头结点,放置于新链表之前,最后返回的就是dummy.next:设置cur为当前节点,从dummy开始 2.当两个链表 ...

  3. 剑指Offer:合并两个排序的链表【25】

    剑指Offer:合并两个排序的链表[25] 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 每次都是比较箭头节点,把小节点连接到已经合 ...

  4. 《剑指offer》-- 链表中倒数第k个节点、反转链表、合并两个排序的链表

    一.链表中倒数时第k个节点: 1.题目: 输入一个链表,输出该链表中倒数第k个结点. 2.解题思路:单链表具有单向移动的特性. (1)第一种:先遍历链表,算出链表节点数count,第二次直接遍历到第c ...

  5. LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表

    剑指 Offer 25. 合并两个排序的链表 Ideas 这题让我想到了归并排序: 划分问题:把序列分成元素个数尽量相等的两半: 递归求解:把两半元素分别排序: 合并问题:把两个有序表合并成一个. 捞 ...

  6. 【LeetCode】剑指 Offer 25. 合并两个排序的链表

    [LeetCode]剑指 Offer 25. 合并两个排序的链表 文章目录 [LeetCode]剑指 Offer 25. 合并两个排序的链表 一.递归 二.伪头节点 总结 一.递归 思路: 如果有一个 ...

  7. 剑指Offer面试题:16.合并两个排序的链表

    PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:"哦,原来你也在这里? " 一.题目:合并两个排序 ...

  8. 剑指offer:面试题25. 合并两个排序的链表

    题目:合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1-& ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  10. python 合并两个排序的链表

    合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1-> ...

最新文章

  1. 单例测试模式中【饿汉式】与【懒汉式】的区别
  2. Android Studio 快捷键
  3. 好架构是进化来的,不是设计来的
  4. 如何用emacs打开许多文件
  5. js实现代码类似w3School演示效果
  6. 深度学习第三次课-梯度下降与反向传播
  7. php 滑动 图片,JQuery图片滑动
  8. Android -- AudioPlayer
  9. ELK logstash grok匹配失败存另外的es表
  10. 极客大学架构师训练营 系统架构 大型网站技术架构 维基百科、淘宝、新浪微博案例分析 第8课 听课总结
  11. 腾讯再次推出“王卡宽带”,大家觉得怎么样?
  12. OpenMP并行编程计算π值及PSRS排序
  13. Unity批量给模型上同一个材质
  14. win7 IIS7.0 【IIS 管理器无法验证此内置帐户是否有访问权】
  15. 马云的又一招棋,平台基因怎么让飞猪成为出境游领军者
  16. win下显示桌面图标消失解决办法
  17. 2021年煤矿采煤机(掘进机)操作考试资料及煤矿采煤机(掘进机)操作考试APP
  18. S50(Mifare 1K)卡简介及存储控制原理
  19. NFV主要概念的术语
  20. Kotlin|这些隐藏的内存陷阱,你应该熟记于心

热门文章

  1. css 获取屏幕宽度_设备像素、设备独立像素、CSS像素、分辨率、PPI、devicePixelRatio 的区别...
  2. halcon python缺陷检测_Halcon学习笔记之缺陷检测(一)
  3. java 从一个容器获取对象,如何从 Spring IoC 容器中获取对象?
  4. ssm上传文件获取路径_SSM实现图片上传下载功能
  5. C语言:--位域和内存对齐
  6. # 遍历结构体_C#学习笔记05--枚举/结构体
  7. 在线画 有穷状态自动机 的软件_怎么画思维导图?不用下载软件,在线就能操作...
  8. java程会释放锁join_关于join() 是否会释放锁的一些思考
  9. linux 查看端口 程序,linux开发:Linux下查看端口占用
  10. java mongo api_MONGODB的javaAPI简单应用