数据结构与算法编程题9

news2025/1/16 16:00:42

将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据
a: 1, 2, 4, 5, 7, 8, 9, 10
b: 1, 2, 3, 6, 7, 8

#include <iostream>
using namespace std;

typedef int Elemtype;
#define ERROR 0;
#define OK    1;

typedef struct LNode
{
	Elemtype data;      //结点保存的数据
	struct LNode* next; //结构体指针
}LNode, * LinkList;

/*单链表初始化*/
bool Init_LinkList(LinkList& L)
{
	L = (LinkList)malloc(sizeof(LNode));  //新建头结点
	if (L == NULL)
	{
		return ERROR;
	}
	L->data = 0;
	L->next = NULL;
	return OK;
}

/*单链表头插法*/
bool LinkList_head_instert(LinkList& L)
{
	int x = 0;
	LNode* p = NULL;
	while (cin >> x)
	{
		p = (LinkList)malloc(sizeof(LNode));
		if (p != NULL)  //防止分配地址失败
		{
			p->data = x;
			p->next = L->next;
			L->next = p;
			if (cin.get() == '\n') break;  //检测换行符
		}
		else
		{
			exit(0);
			cout << "内存分配失败" << endl;
		}
	}
	return OK;
}

/*单链表尾插法*/
bool LinkList_tail_instert(LinkList& L)
{
	int x = 0;
	LNode* p = NULL;
	LNode* r = NULL;
	r = L;
	while (cin >> x)
	{
		p = (LinkList)malloc(sizeof(LNode));
		if (p != NULL)  //防止分配地址失败
		{
			p->data = x;
			p->next = NULL;
			r->next = p;
			r = p;
			if (cin.get() == '\n') break;  //检测换行符
		}
		else
		{
			exit(0);
			cout << "内存分配失败" << endl;
		}
	}
	return OK;
}

/*单链表遍历*/
bool LinkList_All_value(LinkList L)
{
	if (L->next == NULL)
	{
		cout << "链表为空" << endl;
		return ERROR;
	}
	LNode* s = NULL;
	s = L->next;
	while (s != NULL)
	{
		cout << s->data << "   ";
		s = s->next;
	}
	cout << endl;
	free(s);
	return OK;
}

/*单链表长度*/
int LinkList_length(LinkList L)
{
	int count = 0;
	LNode* s = NULL;
	s = L->next;
	while (s != NULL)
	{
		count++;
		s = s->next;
	}
	return count;
}

/*清空单链表*/
void Clear_LinkList(LinkList& L)
{
	LNode* p = L->next;
	LNode* q = NULL;
	while (p != NULL)
	{
		q = p->next;
		free(p);
		p = q;
	}
	L->next = NULL;
}

/*销毁单链表*/
void Destory_LinkList(LinkList& L)
{
	LNode* p = NULL;
	LNode* q = NULL;
	p = L;
	while (p != NULL)
	{
		q = p->next;
		free(p);
		p = q;
	}
	L = NULL;
}

//------------------------------------核心代码------------------------------------//
void hebing(LinkList& La, LinkList& Lb, LinkList& Lc)
{
	LNode* pa = La->next;
	LNode* pb = Lb->next;
	LNode* pc = La;
	Lc = La;
	LNode* q = NULL;
	while (pa != NULL && pb != NULL)
	{
		if (pa->data < pb->data)
		{
			pc->next = pa;
			pc = pa;
			pa = pa->next;
		}
		else if (pa->data > pb->data)
		{
			pc->next = pb;
			pc = pb;
			pb = pb->next;
		}
		else //pa->data == pb->data
		{
			pc->next = pa;
			pc = pa;
			pa = pa->next;
			q = pb->next;
			delete  pb;
			pb = q;
		}
	}
	pc->next = pa ? pa : pb;
	delete Lb;
}
//------------------------------------核心代码------------------------------------//
/*将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另
外占用其它的存储空间。表中不允许有重复的数据*/
//a: 1, 2, 4, 5, 7, 8, 9, 10
//b: 1, 2, 3, 6, 7, 8

int	main(void)
{
	LinkList L1 = NULL;
	Init_LinkList(L1);
	LinkList_tail_instert(L1);//1 2 4 5 7 8 9 10
	LinkList_All_value(L1);
	LinkList L2 = NULL;
	Init_LinkList(L2);
	LinkList_tail_instert(L2);//1 2 3 6 7 8
	LinkList_All_value(L2);
	LinkList L3 = NULL;
	hebing(L1, L2, L3);
	LinkList_All_value(L3);
	return 0;
}

在这里插入图片描述

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

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

相关文章

试试MyBatis-Plus可视化代码生成器,太香了,你一定会感谢我

前言 在基于Mybatis的开发模式中&#xff0c;很多开发者还会选择Mybatis-Plus来辅助功能开发&#xff0c;以此提高开发的效率。虽然Mybatis也有代码生成的工具&#xff0c;但Mybatis-Plus由于在Mybatis基础上做了一些调整&#xff0c;因此&#xff0c;常规的生成工具生成的代码…

redis运维(十六) 有序集合

一 有序集合 把握一点&#xff1a; 各种redis 命令都提供各种语言对应的API 接口,后续API是关键 ① 概念 1、sorted set --> 有序集合2、redis有序集合也是集合类型的一部分&#xff0c;所以它保留了集合中元素不能重复的特性3、但是不同的是,有序集合给每个元素多设置…

【LeetCode刷题-链表】--25.K个一组翻转链表

25.K个一组翻转链表 思路&#xff1a; 把链表节点按照k个一组分组&#xff0c;可以使用一个指针head依次指向每组的头节点&#xff0c;这个指针每次向前移动k步&#xff0c;直至链表结尾&#xff0c;对于每个分组&#xff0c; 先判断它的长度是否大于等于k&#xff0c;若是&am…

微博头条文章开放接口报错 auth by Null spi

接口文档地址 https://open.weibo.com/wiki/Toutiao/api 接口说明 https://api.weibo.com/proxy/article/publish.json 请求方式 POST 请求参数 参数名称类型是否必需描述titlestring是文章标题&#xff0c;限定32个中英文字符以内contentstring是正文内容&#xff0c;限制9…

Servlet---HttpServlet、HttpServletRequest、HttpServletResponseAPI详解

文章目录 HttpServlet基础方法doXXX方法Servlet的生命周期 HttpServletRequest获取请求中的信息获取请求传递的参数获取 query string 里的数据获取form表单里的数据获取JSON里的数据如何解析JSON格式获取数据返回数据 HttpServletResponse设置响应的Header设置不同的状态码设置…

C++(模板进阶)

目录 前言&#xff1a; 本章学习目标&#xff1a; 1.非类型模版参数 1.1使用方法 1.2注意事项 1.3 实际引用 2.模版特化 2.1概念 2.2函数模板特化 2.3类模板特化 2.3.1全特化 2.3.2偏特化 3.模版分离编译 ​编辑 3.1失败原因 ​编辑 3.2解决方案 4 总结 前言&…

乐划锁屏插画大赏热度持续,进一步促进价值内容的创造与传播

锁屏,原本只是为了防止手机在口袋里“误触”而打造的功能,现如今逐渐成为文化传播领域的热门入口。乐划锁屏不断丰富锁屏内容和场景玩法,通过打造“乐划锁屏插画大赏”系列活动为广大内容创作者提供了更多展示自我的机会,丰富平台内容。 从2020年到2023年,乐划锁屏插画大赏已连…

[点云分割] 基于颜色的区域增长分割

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <thread> #include <vector>#include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/search/search.h> #include <pcl/search/kdtree.h> #inclu…

Node.js入门指南(一)

目录 Node.js入门 什么是Node.js Node.js的作用 Node.js安装 Node.js编码注意事项 Buffer(缓冲器&#xff09; 定义 使用 fs模块 概念 文件写入 文件读取 文件移动与重命名 文件删除 文件夹操作 查看资源状态 路径问题 path模块 Node.js入门 什么是Node.js …

基于单片机声光控智能路灯系统仿真设计

**单片机设计介绍&#xff0c; 基于单片机声光控智能路灯系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的声光控智能路灯系统是一种利用单片机技术实现智能控制的路灯系统。它通过感知环境音量和光照强度…

vue中为什么data属性是一个函数而不是一个对象

面试官&#xff1a;为什么data属性是一个函数而不是一个对象&#xff1f; 一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象&#xff0c;也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:"foo"},// 函数格…

c语言编程(模考2)

简答题1 从键盘输入10个数&#xff0c;统计非正数的个数&#xff0c;并且计算非正数的和 #include<stdio.h> int main() {int i,n0,sum0;int a[10];printf("请输入10个数&#xff1a;");for(i0;i<10;i){scanf("%d",&a[i]);}for(i0;i<10…

【Python】数据类型和切片的零碎知识点

1. 数据类型 pow(a, b, c) # a^b % c print("happy {}".format(name))数字类型包括整数&#xff0c;浮点数&#xff0c;复数 0x9a表示十六进制数&#xff08;0x&#xff0c;0X开头表示十六进制&#xff09; 0b1010&#xff0c;-0B101表示二进制数&#xff08;0…

【endnote】如何将参考文献放到想放的位置

1. 方式 直接将生成的文献全选拖到想放的位置 注意&#xff1a;不要使用ctrlx这种操作。 2.具体操作 2.1 新建测试文档 如下图&#xff1a; 2.2 引用两篇文献】 如下图&#xff1a; 2.3 测试 如下图&#xff0c;选中所有已经引用的文献。 拖拽到想要防止的位置。 新…

产品经理的具体工作职责有什么?

产品经理是现代企业中非常重要的一种职位&#xff0c;其工作职责也非常广泛和复杂。产品经理需要在市场、用户、技术等多个方面进行综合考虑&#xff0c;为企业开发出具有竞争力的产品&#xff0c;从而推动企业的发展。下面我们将详细介绍产品经理的具体工作职责。 一、市场调研…

深入理解Java注解的实现原理以及前世今生

深入理解Java注解的实现原理以及前世今生 小雪初寒&#xff0c;请添衣&#xff0c;冬棋如意&#xff0c;待良人&#xff0c;望归期。 1.Java注解的前世今生 Java注解是一种元数据标记&#xff0c;它提供了一种在Java代码中添加元数据&#xff08;注释&#xff09;的方式。注解…

【IEEE独立出版 | 往届均完成检索】2024年第四届消费电子与计算机工程国际学术会议(ICCECE 2024)

#国际学术会议# 推荐 #广州# 【IEEE独立出版 | 往届均完成检索】2024年第四届消费电子与计算机工程国际学术会议&#xff08;ICCECE 2024&#xff09; 2024 4th International Conference on Consumer Electronics and Computer Engineering 2024年1月12-14日 | 中国广州 会…

力扣.面试题 04.06. 后继者(java 树的中序遍历)

Problem: 面试题 04.06. 后继者 文章目录 题目描述思路解题方法复杂度Code 题目描述 设计一个算法&#xff0c;找出二叉搜索树中指定节点的“下一个”节点&#xff08;也即中序后继&#xff09;。 如果指定节点没有对应的“下一个”节点&#xff0c;则返回null。 思路 由于题…

双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?

双11大促已落下帷幕&#xff0c;虽然今年不再战报满天飞&#xff0c;但从公布的数据来看&#xff0c;家电行业整体表现不俗。 根据抖音电商品牌业务发布的收官战报&#xff0c;家电行业创造了成交新纪录&#xff0c;整体同比增长125%。快手官方数据显示&#xff0c;消电家居行业…

7.HTML中列表标签

7.列表标签 7.1无序列表&#xff08;重点&#xff09; 表格是用来显示数据的&#xff0c;那么列表就是用来布局的。 列表最大的特点就是整齐&#xff0c;整洁&#xff0c;有序&#xff0c;他作为布局会更加自由和方便&#xff0c; 根据使用的情景不同&#xff0c;列表可分为三…