剑指offer(16)——C++实现两个链表合并

2023-11-18

题目

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

考察点

  • 链表

解题思路

  • 递归实现,比较每个节点大小,将较小的放入新链表
  • 非递归,原理同上

完整代码

/*16-合并两个链表*/
#include<iostream>
#include<queue>
using namespace std;
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};
class Solution {
public:
 
	//递归实现 ,合并与排序一起进行
	ListNode* Merge2(ListNode* pHead1, ListNode* pHead2)
	{
		ListNode* ListMerge;
		if (pHead1 == NULL)
			return pHead2;//???ListMerge = pHead2;会产生堆栈溢出
		if (pHead2 == NULL)
			return pHead1;//????ListMerge = pHead1;
		//针对每一个节点进行比较
		if (pHead1->val > pHead2->val)
		{
			ListMerge = pHead2;///将较小的赋值给要输出的链表
			ListMerge->next = Merge2(pHead1, pHead2->next);//继续对pHead1.pHead2的下一位进行递归,赋值给要输出的链表的下一位
		}
		else
		{
			ListMerge = pHead1;
			ListMerge->next = Merge2(pHead1->next, pHead2);
		}
		return ListMerge;
	}
};
int main()
{
	ListNode *p1 = new ListNode(1); ListNode *p2 = new ListNode(3); ListNode *p3 = new ListNode(5);
	ListNode *p4 = new ListNode(2); ListNode *p5 = new ListNode(4); ListNode *p6 = new ListNode(6);
	p1->next = p2; p2->next = p3;  p4->next = p5; p5->next = p6;
	Solution s;
	ListNode* result;
	result = s.Merge(p1, p4);
	//result = s.Merge2(p1, p4);
	//打印链表
	queue<ListNode*> res;
	ListNode* Node = result;
	while (Node != NULL)//压入队列
	{
		res.push(Node);
		Node = Node->next;
	}
	while (!res.empty())//出队列
	{
		Node = res.front();
		cout << Node->val << ' ';
		res.pop();

	}
	return 0;
}

编程问题

  • 链表的打印:顺序打印可用队列实现;逆序可用栈实现;
  • 返回值问题: 原因目前未知。
if (pHead1 == NULL)
			return pHead2;//???ListMerge = pHead2;会产生堆栈溢出
		if (pHead2 == NULL)
			return pHead1;//????ListMerge = pHead1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剑指offer(16)——C++实现两个链表合并 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p

随机推荐

  • 软件工程复习10:软件设计与实现

    作者 非妃是公主 专栏 软件工程 个性签 顺境不惰 逆境不馁 以心制境 万事可成 曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01 软件工程概述 软件工程复习02 个人技术 软件工程复习03 个人软件流程 软件工程复习04
  • Java经典面试题:Redis 和 Mysql 如何保证数据一致性

    Redis 和 Mysql 如何保证数据一致性 引言 重要性 挑战 Redis和MySQL概述 Redis Remote Dictionary Server MySQL 数据一致性概述 Redis的数据一致性机制 MySQL的数据一致性机制
  • vim常用操作——vim中执行shell

    vim常用操作 vim中执行shell vim中执行shell命令 有以下四种形式 单纯执行shell命令 不更改文件 形式 command 解释 不退出vim 并执行shell命令command 将命令输出显示在vim的命令区域 不会改变
  • 文件,文件夹操作(权限设置+操作)

    文件权限 r 可读权限 值为4 w 可写权限 值为2 x 可执行权限 值为1 文件权限说明 文件夹权限755 文件权限644 一个文件或文件夹的三种用户 第一位是拥有者 第二个是组内用户 第三个是组外用户 权限举例说明 文件夹权限为755
  • Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日

    1 目的 1 1 想 在Microsoft project2016中如何编辑一周七天工作日 2 操作 2 1 项目 gt 更改工作时间 gt 对于日历 标准 项目日历 gt 工作周 gt 详细信息 gt 选中 星期日 和 星期六 gt 对所
  • Eigen库使用入门

    为了将Matlab写的运动学程序转化为C 所编写的dll 需要用用到矩阵库Eigen Eigen库是一个使用C 源码编写的矩阵库 基本上能满足计算中所需要用到的运算 下面介绍一些库的入门学习 1 首先是关于固定大小矩阵 向量的定义 初始化
  • python 3.2 错误 ‘generator’ object has no attribute ‘next’

    下面是一段简单的示例 定义Generator函数 def func n for i in range n yield i 在for循环中输出 for i in func 3 print i 使用next 输出 r func 4 print
  • mysql数据存储文件结构图

    1 基本结构图 2 文件说明 数据库文件夹 每一个数据库都会建立一个单独的文件夹
  • 全同态加密(FHE)体系概述(初学版)

    同态加密定义 假设有这样一个场景 用户有一组私密数据 被加密存储在了第三方的云平台 现在 该用户想对这组数据进行某种处理 但是处理过程和结果都不想让第三方云平台看到 当然 用户可以选择将数据下载下来 处理后再加密上传 但是 假如这一组数据量
  • 一种全自动的牙齿CBCT三维个体识别和分割方法

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯 小白决心每天为大家带来经典或者最新论文的解读和分享 旨在帮助各位读者快速了解论文内容 个人能力有限 理解难免出现偏差 建议
  • python安装numpy+mkl 和 scipy库失败的原因

    1 使用系统自带的pip install scipy 安装scipy库时 出现了这样的错误 之所以会出现这样的错误 主要是因为安装系统自带的numpy库时 是numpy而不是numpy mkl库 所以导致Scipy安装失败 scipy依赖于
  • Windows映像劫持调试程序

    简介 映像劫持 也被称为 IFEO Image File Execution Options 在Windows NT架构的系统里 IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定 当一个可执行程序位于I
  • uln2003步进电机驱动程序

    ULN2003是一种常见的步进电机驱动芯片 可用于驱动4相 5线和6线步进电机 其驱动方式是通过输入高低电平来控制电机旋转的步进角度 以下是一般的ULN2003步进电机驱动程序框架 定义引脚 定义控制步进电机的引脚 包括4个输入引脚和4个输
  • Gutenberg 块编辑器 11.9 专注于导航菜单和块主题

    Gutenberg 11 9块编辑器于11月初发布 其中包含数十项增强功能 贡献者正在加速前进 在预计 12 月 14 日发布 WordPress 5 9 之前获得一些最终功能 11 9 版是最后一个包含即将到来的 WordPress 更新
  • chrome net::ERR_CERT_AUTHORITY_INVALID 问题

    浏览器输入 chrome net internals hsts 输入框输入你不需要安全检查的 域名 ok
  • centos7安装图形界面

    Centos7 安装图形界面 第一步 确认yum可用 1 1 判断yum是否可用 输入 yum list 如果出现以下信息 则代表不可用 1 2 更改配置 vi etc sysconfig network scripts ifcfg ens
  • Apache 之执行 CGI 脚本(Python 实现)

    目录 前言 1 查看并挑选 Python 版本 2 用 Python 实现一个简单的 CGI 脚本 3 查看 CGI 环境变量 总结 前言 本文记录了一个搭建 CGI 环境的示例 前文推荐 Apache 2 4 54 x64 安装及配置 系
  • 四、webpack的基本使用,处理字体文件,CSV,XML文件(Mhua)

    字体文件 webpack 处理字体文件配置 module rules test woff woff2 eot ttf otf asset resource 可以帮助我们载入任何类型的资源 type asset resource 加载数据 如
  • 快速玩转 Llama2!机器学习 PAI 最佳实践(二)—全参数微调训练

    前言 近期 Meta 宣布大语言模型 Llama2 开源 包含7B 13B 70B不同尺寸 分别对应70亿 130亿 700亿参数量 并在每个规格下都有专门适配对话场景的优化模型Llama 2 Chat Llama2 可免费用于研究场景和商
  • 剑指offer(16)——C++实现两个链表合并

    题目 输入两个单调递增的链表 输出两个链表合成后的链表 当然我们需要合成后的链表满足单调不减规则 考察点 链表 解题思路 递归实现 比较每个节点大小 将较小的放入新链表 非递归 原理同上 完整代码 16 合并两个链表 include