2:数据结构复习线性表(一般集合的并集:链式解决方案)

2023-11-08

线性表的合并
[例2.1]求解一般集合的并集问题。
[问题描述]
已知两个集合A和B,现要求一个新的集合A= AUB。例如,设
A=(7, 5, 3, 11)
B=(2, 6,3)
合并后
A=(7, 5,3,11,2, 6)
[问题分析]
可以利用两个线性表LA和LB分别表示集合A和B (即线性表中的数据元素为集合中的成员),这样只需扩大线性表LA,将存在于LB中而不存在于LA中的数据元素插人到LA中去。
只要从LB中依次取得每个数据元素,并依值在LA中进行查访,若不存在,则插人之。
具体实现时既可采用顺序形式,也可采用链表形式。
算法步骤:
①分别获取LA表长m和B表长n。
②从LB中第1个数据元素开始,循环n次执行以下操作:
●从LB中查找第 i (1≤i≤n)个数据元素赋给e;
●在LA中查找元素e. 如果不存在,则将e插在表LA的最后。
————————————————
版权声明:本文为CSDN博主「时间sk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_63215361/article/details/131401471

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

#define ERROR 0

typedef struct LNode {
	int data; //结点的数据域
	struct LNode *next; //结点的指针域
} LNode, *List; //LinkList为指向结构体LNode的指针类型

int n, m;
char st = 'A';

void InitList(List &L) //创建链表
{
	L = new LNode;
	L->next = NULL;
}

void ListInput(List &L, int n) //链表数据的输入
{
	int i;
	List p, r;
	r = L;
	char filename[20] = { 0 };
	cout << "请输入顺序表L" << st << "的数据文件名称(文件名+“.txt”,如List" << st << ".txt):" << endl;
	++st;
	gets(filename);
	fstream file;
	file.open(filename);
	if (!file) {
		cout << "未找到相关文件,无法打开!" << endl;
		exit(ERROR);
	}
	while (!file.eof()) {
		p = new LNode;
		file >> p->data;
		p->next = NULL;
		r->next = p;
		r = p;
		n++;
	}
	file.close();
}

bool LocateElem(List L, int e) //判断List里有没有e这个元素
{
	List p;
	p = L->next;
	while (p != NULL) {
		if (p->data == e)
			return true;
		p = p->next;
	}
	return false;
}

void ListInsert(List &L, int e) //将e插入到List中
{
	List p;
	p = new LNode;
	p->data = e;
	p->next = L->next;
	L->next = p;
}

void ListOutput(List L) //输出List
{
	List p;
	p = L->next;
	while (p != NULL) {
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;
}

void unionList(List &LA, List LB) // 线性表的合并(链表)
{
	//将所有在线性表LB中但不在LA中的数据元素插入到LA中
	int e;
	List p;
	p = LB->next;
	while (p != NULL) {
		e = p->data;
		if (!LocateElem(LA, e)) //LA中不存在和e相同的数据元素,则插入之
			ListInsert(LA, e);
		p = p->next;
	}
} //unionList

int main() {
	List LA, LB;

	InitList(LA);
	
	InitList(LB);
	
	ListInput(LA, n);
	ListInput(LB, m);

	unionList(LA, LB);

	cout << "LA和LB合并后的集合为:\n";
	ListOutput(LA);
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2:数据结构复习线性表(一般集合的并集:链式解决方案) 的相关文章

随机推荐

  • 2021年7月,关于技术和未来

    近期研究了一段时间梅花易数 作为一个从小接受唯物主义教育的社会主义接班人 自然曾经一度对这些所谓的封建迷信是不屑一顾的 后来随着年龄增长 才开始慢慢觉得应对这些传承下来的古老文化保持敬畏 然而 直到最近真正仔细研究了后才发现 梅花易数居然有
  • k8s 之 volume sc pv pvc 详解

    数据卷概述 Kubernetes Volume 数据卷 主要解决了如下两方面问题 数据持久性 通常情况下 容器运行起来之后 写入到其文件系统的文件暂时性的 当容器崩溃后 kubelet将会重启该容器 此时原容器运行后写入的文件将丢失 因为容
  • PWM移相

    PWM移相可以从两方面考虑 1 如果能够移动时基 那么移动时基是一种最简便的方法 2 如果没办法移动时基 那么改变比较值也是一种可行的办法 C2000系列DSP的ePWM模块对PWM移相有相关的应用说明 如下图所示 来源于2803x芯片手册
  • Qt实现跨窗口信号槽通信

    多窗口通信 如果是窗口类对象之间互相包含 则可以直接开放public接口调用 不过 很多情况下主窗口和子窗口之间要做到异步消息通信 就必须依赖到跨窗口的信号槽 以下是一个简单的示例 母窗口 mainwindow h ifndef MAINW
  • L1-7 前世档案

    L1 7 前世档案 网络世界中时常会遇到这类滑稽的算命小程序 实现原理很简单 随便设计几个问题 根据玩家对每个问题的回答选择一条判断树中的路径 如下图所示 结论就是路径终点对应的那个结点 现在我们把结论从左到右顺序编号 编号从 1 开始 这
  • 单机 steam_好玩不贵,一个人可以玩很久,steam百元单机游戏推荐

    steam市场上的游戏有琳琅满目 从一块钱到几百块的游戏充斥在市场中 如何在众多游戏中挑选自己喜欢适合的游戏呢 今天就来推荐一下2款百元左右的单机游戏 包你满意 1 缺氧 目前steam售价 本体58元 本体 7DLC Klei survi
  • 线性方程组解的分析:唯一解,无穷多解以及无解

    本文将总结关于线性方程组解的知识点 线性方程组 定义1 线性方程组 我们将形如下式的方程组称为线性方程组 a11x1 a12x2 a1nxn b1a21x1 a22x2 a2nxn b2 am1x1 am2x2 amnxn bm 9 9 a
  • window10配置OpenGL ES3.0

    1 下载书籍源码 地址 GitHub danginsburg opengles3 book OpenGL ES 3 0 Programming Guide Sample Code 2 下载mali opengl es模拟器 下载地址 建议下
  • allegro如何通过dra文件生产psm文件

    1 dra文件是可以用allegro打开的封装文件 但是要想被pcb调用 需要psm文件才可以 想要通过dra生成psm文件很简单
  • @ComponentScan注解进行扫描的几种方式。

    方式一 扫描包 返回是String的数组 所以可是多个包路径 也可是一个包路径 完整写法是 单个 ComponentScan basePackages xxx 多个 ComponentScan basePackages xxx aaa 注意
  • 2020美赛F奖论文(一):摘要、绪论和模型准备

    全文 2020美赛F奖论文 一 摘要 绪论和模型准备 2020美赛F奖论文 二 传球网络模型 PNM 的建立和影响因子分析 2020美赛F奖论文 三 足球团队指标和基于机器学习的球队表现预测 2020美赛F奖论文 四 模拟退火算法驱动的结构
  • 神经网络七:神经网络设置层的数量和尺寸

    本文就现在神经网络中层的数量和尺寸 分析其中的优缺点 在此特声明 本文的内容是来自 CS231n课程笔记翻译 神经网络笔记1 下 智能单元 知乎专栏 因本人有时会查阅这些相关的知识点 一直翻文档比较麻烦 特从文档中摘录复制写到博客中 其中的
  • Mac M1系统 miniconda安装、配置conda环境,及在conda环境中安装激活QIIME2

    Mac M1系统 miniconda安装 配置conda环境 及在conda环境中安装激活QIIME2 1 适配版本的miniconda软件安装包下载 windows MAC LINUX Miniconda Conda documentat
  • JavaScript——将json数组填充进excel表并下载保存

    今天遇到的一个问题就是 获取到猫眼电影票房总榜的数据后 怎么把他们填充进excel中 本文参考了另一篇博客 地址如下 https blog csdn net qq 34623560 article details 79928248 本文对其
  • flowable(九) 通过ui部署流程图

    下载xml模型 登陆到flowable modeler后台 上传部署 登陆flowable admin地址 ok
  • React基础(肆)———状态和循环渲染

    一 状态 什么是状态 import React Component from react export default class App extends Component state mytext 收藏 myShow true rend
  • 问题 C: 括号匹配

    题目描述 给你一个字符串 里面只包含 四种符号 请问你需要至少添加多少个括号才能使这些括号匹配起来 如 是匹配的 是匹配的 是不匹配的 是不匹配的 输入 第一行输入一个正整数N 表示测试数据组数 N lt 10 每组测试数据都只有一行 是一
  • 调试最长的一帧(第14天)

    看看流程 可见分页数据库的更新也是和场景的筛选绘制是同时进行的 再看看大图 第14天要进行左下角的 依照惯例 跟过去 现在开始步入正轨 发现第0个fileName为空 这是有问题的 创建pagelod时修正为 这次进来了 在这里删除 放入r
  • HTML5+CSS3D酷炫相册

    HTML5 CSS3D酷炫相册 图片预览 目录结构 源码 HTML
  • 2:数据结构复习线性表(一般集合的并集:链式解决方案)

    线性表的合并 例2 1 求解一般集合的并集问题 问题描述 已知两个集合A和B 现要求一个新的集合A AUB 例如 设 A 7 5 3 11 B 2 6 3 合并后 A 7 5 3 11 2 6 问题分析 可以利用两个线性表LA和LB分别表示