线性表应用(非递减合并、分解链表、删除线性表)

news2024/11/18 22:24:16

         将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。表中允许有重复的数据。

#include<iostream>
using namespace std;
typedef struct list
{
	int data;
    list* next;
}list,*linklist;
void Createlist(linklist& l)
{
	l = new list;
	l->next = NULL;
	linklist p,r;
	r = l;
	for (int i = 0; i < 5; i++)
	{
		p = new list;
		cin >> p->data;
		r->next = p;
		r = p;
	}
	p->next = NULL;
}
void Addlist(linklist& L1, linklist& L2)
{
	linklist L3, pa, pb,p;
	pa = L1->next;
	pb = L2->next;
	L3 = L1, L3->next = NULL;
	while (pa || pb)
	{
		if (pa==NULL)
		{
			p = pb;
			pb = pb->next;
		}
		else if (pb==NULL)
		{
			p = pa;
			pa = pa->next;
		}
		else if (pa->data <= pb->data)
		{
			p = pa;
			pa = pa->next;
		}
		else
		{
			p = pb;
			pb = pb->next;
		}
		p->next = L3->next;
		L3->next = p;
	}
	delete L2;
}
void Printlist(linklist& l)
{
	linklist p;
	p = l->next;
	while (p)
	{
		cout << p->data<<" ";
		p = p->next;
	}
}
int main()
{
	linklist L1, L2;
	cout << "输入第一个链表:" << endl;
	Createlist(L1);
	cout << "输入第二个链表:" << endl;
	Createlist(L2);
	Addlist(L1, L2);
	cout << "合并链表:" << endl;
	Printlist(L1);
}

       设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。

#include<iostream>
using namespace std;
typedef struct list
{
	int data;
    list* next;
}list,*linklist;
void Createlist(linklist& l)
{
	l = new list;
	l->next = NULL;
	linklist p,r;
	r = l;
	for (int i = 0; i <10; i++)
	{
		p = new list;
		cin >> p->data;
		r->next = p;
		r = p;
	}
	p->next = NULL;
}
void Separatelist(linklist& L1, linklist& L2, linklist& L3)
{
	L3 = new list;
	L3->next = NULL;
	linklist p,r;
	p = L1->next;
	L2 = L1;
	L2->next = NULL;
	while (p)
	{
		r = p->next;
		if (p->data < 0)
		{
			p->next = L2->next;
			L2->next = p;
		}
		else
		{
			p->next = L3->next;
			L3->next = p;
		}
		p = r;
	}
}
void Printlist(linklist& l)
{
	linklist p;
	p = l->next;
	while (p)
	{
		cout << p->data<<" ";
		p = p->next;
	}
	cout << endl;
}
int main()
{
	linklist L1, L2,L3;
	cout << "输入第一个链表:" << endl;
	Createlist(L1);
	Separatelist(L1, L2, L3);
	cout << "拆分链表:" << endl;
	Printlist(L2);
	Printlist(L3);
}

 

       已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O (1)的算法,该算法删除线性表中所有值为ite m的数据元素。

#include<iostream>
#define maxsize 100
using namespace std;
typedef struct node
{
	int data;
}Node;
typedef struct
{
	Node* elem;
	int length;
}Sqlist;
void Initlist(Sqlist& L)
{
	L.elem = new Node[maxsize];
	L.length = 0;
}
int Createlist(Sqlist& L)
{
	if (L.length == maxsize) return 0;
	for (int i = 0; i < 10; i++)
	{
		cin >> L.elem[i].data;
		L.length++;
	}
	return 1;
}
void Deletelist(Sqlist& L, Node e)
{
	int k = 0;
	for (int i = 0; i < L.length; i++)
	{
		if (L.elem[i].data != e.data)
		{
			L.elem[k].data = L.elem[i].data;
			k++;
		}
	}
	L.length = k;
}
void Printlist(Sqlist L)
{
	for (int i=0;i<L.length;i++)
	{
		cout << L.elem[i].data << " " ;
	}
	cout << endl;
}
int main()
{
	Sqlist A;
	Initlist(A);
	Createlist(A);
	cout << "原线性表:" << endl;
	Printlist(A);
	cout << "输入要删除的一个数:" << endl;
	Node n;
	cin >> n.data;
	Deletelist(A,n);
	Printlist(A);
}

 

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

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

相关文章

Linux 系统移植(一)-- 系统组成

参考资料&#xff1a; linux系统移植篇&#xff08;一&#xff09;—— linux系统组成【野火Linux移植篇】1-uboot初识与编译/烧录步骤 文章目录 一、linux系统组成二、Uboot三、Linux内核四、设备树 本篇为Linux系统移植系列的第一篇文章&#xff0c;介绍了一个完整可运行的L…

2015年蓝桥杯省赛C/C++ A组 灾后重建题解(100分)

10. 灾后重建 Pear市一共有N&#xff08;<50000&#xff09;个居民点&#xff0c;居民点之间有M&#xff08;<200000&#xff09;条双向道路相连。这些居民点两两之间都可以通过双向道路到达。这种情况一直持续到最近&#xff0c;一次严重的地震毁坏了全部M条道路。 震后…

【10个OOM异常的场景以及对应的排查经验】

文章目录 1. 场景描述&#xff1a;内存泄漏2. 场景描述&#xff1a;过多线程3. 场景描述&#xff1a;大量数据查询4. 场景描述&#xff1a;大文件读取5. 场景描述&#xff1a;高并发访问6. 场景描述&#xff1a;大字符串操作7. 场景描述&#xff1a;大数据集合操作8. 场景描述&…

C语言-扫雷游戏的实现

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

反射【Java】

概念&#xff1a;允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问 获取class对象 Class.forName("全类名"); //全类名&#xff1a;包名类名 类名.class 对象.getClass(); //有一个名为Goods的类Class clazz1 Class.forName("com.ln1.Goo…

VR赋能红色教育,让爱国主义精神永放光彩

昨天的918防空警报长鸣&#xff0c;人们默哀&#xff0c;可见爱国主义精神长存。为了贯彻落实“把红色资源利用好、红色传统发扬好、红色基因传承好”的指示精神&#xff0c;许多红色景点开始引入VR全景展示技术&#xff0c;为游客提供全方位720度无死角的景区展示体验。 VR全…

【电源专题】什么是充电芯片的Shipping Mode(船运模式)

现在越来越多电子产品小型化,手持化,这样就需要电池来为产品供电。但电池供电造成的另一个难题就是产品的续航能力的强与弱。 如果想提升续航能力,有一种方法是提高电池容量。如果电池体积没有变化的情况下,可能使用了新型材料、高级技术来增加电池容量,但这势必会增加电池…

Webpack设置代码映射,可调试打包后的代码

当我们的代码打包过后再看源码就会变成下面这个样子&#xff1a; 这时候我们就调试不了我们的代码 解决方式&#xff1a; 在webpack.config.js中添加如下代码&#xff1a; module.exports {mode: "development", // 设置打包的模式&#xff1a;production生产模式…

2000-2021年上市公司劳动投资效率测算数据:劳动投资效率、冗余雇佣、雇佣不足(含原始数据和计算代码do文档)

2000-2021 年上市公司劳动投资效率测算数据&#xff1a;劳动投资效率、冗余雇佣、雇佣不足 &#xff08;含计算代码do文档&#xff09; 1、时间&#xff1a;2000-2021 年 2、范围&#xff1a;沪深A 股上市公司 3、指标&#xff1a;code、year、证券代码、货币资金、短期投资…

TexStudio报错 Class: No Found

\classdocument[preprint,review,fleqn,sort&compress,3p]{elsarticle}这里常见导入的类&#xff08;class&#xff09;文件有article.cls&#xff0c;elsarticle.cls&#xff0c;sn-jnl.cls等 一般来说这些文件都应该和我们的源文件document.tex在同一个目录下。如果不在…

Vue复选框批量删除示例

Vue复选框批量删除 通过使用v-model指令绑定单个复选框 例如<input type"checkbox" id"checkbox" v-model"checked"> 而本次我们要做的示例大致是这样的&#xff0c;首先可以增加内容&#xff0c;然后通过勾选来进行单独或者批量删除&…

chk文件怎么恢复?chk文件恢复软件哪个好?

电脑中的每个文件都有其不同的后缀名&#xff0c;如.txt、.png等等&#xff0c;那么你知道.chk后缀的文件是什么吗&#xff1f;下面我们就来一起了解一下吧。 chk文件的含义 chk文件是用户在使用磁盘碎片整理程序后所产生的丢失簇的恢复文件&#xff0c;磁盘中的原文件并没有丢…

0基础学three.js环境搭建(2)

这是0基础学three.js系列中的第二篇&#xff0c;在这篇里面我会带着大家把开发环境搭建起来&#xff0c;关于开发环境&#xff0c;方式很多&#xff0c;如果你没有基础&#xff0c;就跟着我的步骤一步一步来&#xff0c;保你不出错。 首先安装node环境&#xff0c;关于node是干…

操作系统、进程和线程

目录 一、操作系统 二、进程/任务&#xff08;Process/Task&#xff09; 1. 什么是进程/任务 2. 进程控制块抽象&#xff08;PCB Process control Block&#xff09; 3. CPU分配 —— 进程调度&#xff08;Process Scheduling&#xff09; 4. 内存分配 —— 内存管理&…

【Redis】第5讲 Redis的下载并安装

下载Redis中文网https://www.redis.net.cn/ 百度网盘下载&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://p…

软件测试这些基本类型你知道吗?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 关于软件测试的类型&#xff0c;从不同角度来讲&#xff0c;可以分很多种&#xff0c;有时候甚至觉得软件…

深入理解Elasticsearch中的Match Phrase查询

文章目录 摘要Match Phrase查询的原理Match Phrase查询的用法Match Phrase查询的示例代码 Match Phrase查询的注意事项总结 摘要 Elasticsearch是一个功能强大的开源搜索引擎&#xff0c;它提供了丰富的查询功能。其中&#xff0c;Match Phrase查询是一种强大的查询类型&#…

1784_C语言实现常用的复数运算

全部学习汇总&#xff1a; GitHub - GreyZhang/c_basic: little bits of c. 这是最近学习的C语言数据结构的中的案例&#xff0c;但是没有给出具体的实现代码。根据自己的学习水平简单编写了一下&#xff0c;倒是能够计算与输出&#xff0c;但是不知道还有没有什么缺陷。 借用…

C++笔记之文档术语——将可调用对象作为函数参数

C笔记之文档术语——将可调用对象作为函数参数 相关博文&#xff1a;C笔记之函数对象functors与可调用对象 文章目录 C笔记之文档术语——将可调用对象作为函数参数1.在函数参数中传递可调用对象2.‘在参数中传入可调用对象’和‘将可调用对象作为函数参数’哪个描述更加专业…

MyBatis友人帐之使用注解开发

一、利用注解开发 mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到MyBatis 3提供了新的基于注解的配置。不幸的是&#xff0c;Java 注解的的表达力和灵活性十分有限。最强大的 MyBatis 映射并不能用注解来构建 sql 类型主要分成 : select () update …