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

示例:

输入:1->2->4, 1->3->4

输出:1->1->2->3->4->4

(1)思路:递归

(2)代码

#include

using namespace std;

struct ListNode{

int val;

ListNode *next;

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

};

class Solution {

public:

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

if (l1 == nullptr) {

return l2;

} else if (l2 == nullptr) {

return l1;

} else if (l1->val < l2->val) {

l1->next = mergeTwoLists(l1->next, l2);

return l1;

} else {

l2->next = mergeTwoLists(l1, l2->next);

return l2;

}

}

};

void output(ListNode *H){

ListNode *p = H;

while(p){

cout << p->val << " ";

p = p->next;

}

cout << endl;

}

int main()

{

Solution sol;

ListNode* l1, *l2;

l1 = new ListNode(1);

l1->next = new ListNode(9);

l1->next->next = new ListNode(30);

l1->next->next->next = new ListNode(50);

l1->next->next->next->next = new ListNode(70);

l2 = new ListNode(2);

l2->next = new ListNode(4);

l2->next->next = new ListNode(6);

l2->next->next->next = new ListNode(30);

l2->next->next->next->next = new ListNode(50);

// console output 1

output(l1);

output(l2);

ListNode* ans = sol.mergeTwoLists(l1, l2);

// console output 2

output(ans);

return 0;

}

pta两个有序链表的合并_21. 合并两个有序链表相关推荐

  1. 两个无序单链表,排序后合并成一个有序链表

    两个无序单链表,排序后合并成一个有序链表 算法思想:用冒泡法,对链表1和2进行排序,对排序后的两个链表,从小到大进行循环,装入链表3中. #include<stdio.h> #includ ...

  2. java合并两个有序链表_JS实现的合并两个有序链表算法示例

    本文实例讲述了JS实现的合并两个有序链表算法.分享给大家供大家参考,具体如下: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1-> ...

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

    链表面试题3:将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成 的. 首先我们的思想是将得一个链表和第二个链表的每个结点进行比较,谁小谁就插入到新链表的最后. ...

  4. 【数据结构笔记】将两个递增的有序链表合并为一个递增的有序链表

    将两个递增的有序链表合并为一个递增的有序链表.要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间.表中不允许有重复的数据. [题目分析] 合并后的新表用头指针Lc指向,pa和pb分别 ...

  5. 两个非递减有序单链表La和Lb合并成一个非递增有序链表Lc

    #include<iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> ...

  6. 将两个递增的有序链表合并成一个递增的有序链表(CPP版)

    要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间,表中不允许由重复的数据 #include<iostream> using namespace std; //自定义链表的 ...

  7. 链表归并成递减c语言,将两个递增的单链表合并为一个递减的单链表

    问题描述: 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表. 问题解答: ...

  8. 有序链表和数组的合并

    一:链表的合并 思路分析1(双指针解法) 1:定义两个指针遍历l1,l2分别指向第一条链表的头结点list1和第二条链表的头结点list2: 2:定义一个空节点preNode,用于连接两条有序链表,定 ...

  9. 单链表-两个线性表的合并1(破环原链表+尾插法)

    题意: 令L1 = (X1,X2,X3,X4-Xn), L2 = (y1,y2,y3,y4-ym);是两个线性表.采用带头节点的链表存储,设计一个算法合并L1,L2,结果放在线性表L3中,要求如下: ...

最新文章

  1. 《游戏设计师修炼之道:数据驱动的游戏设计》一2.8小结
  2. react 组件的属性
  3. 阿里云物模型层初始化代码实现
  4. WIN7 IE8的桌面图标解决了(简单有效)
  5. LeetCode Longest Substring Without Repeating Characters
  6. 基于ARM 构架(带MMU)的copy_from_user与copy_to_user详细分析
  7. 【洛谷】1600:天天爱跑步【LCA】【开桶】【容斥】【推式子】
  8. Redhat或者Centos 手动安装htop
  9. java 类型 转换 valueOf和parse...
  10. 1.啊哈!算法 --- 一大波数正在靠近——排序
  11. QPainter绘图基本使用
  12. (三)smali 入门
  13. 去年我国出生率跌破1%,有什么影响?
  14. 德赛西威Mib280D升级0393版本系统
  15. linux段错误core dumped,Linux下Segmentation fault(core dumped)简单调试方法
  16. Easyui DataGrid Editor
  17. 在EntityFramework中使用 nock的方法。
  18. Mathematica画图的问题
  19. win11 安卓子系统(WSA)安装教程
  20. ErrorException : Use of undefined constant LARAVEL_START - assumed 'LARAVEL_START'

热门文章

  1. GBDT 和 AdaBoost区别?
  2. 基于Isolation Forest以及MeanShift进行异常检测模型的构建
  3. 影像组学视频学习笔记(27)-SimpleITK包介绍、Li‘s have a solution and plan.
  4. R语言KEGGREST包
  5. java测试时间的类,java 测试五种单例模式需要的时间
  6. ggsave的图片图例不显示中文解决办法
  7. java SE环境变量配置
  8. python字典按value逆序排序_python 对字典按照value进行排序的方法
  9. three.js 弹出二维图片
  10. python 文字转语音