顺序表实现集合的并集、交集、差集

本文介绍了如何使用C++和C语言实现顺序表,并详细阐述了顺序表的构造,包括10个核心功能。重点讨论了如何通过LocateElem函数查找共有元素,实现集合的并集、交集和差集操作,提供了完整的代码实现及运行结果,并提出了可能的改进方案。
摘要由CSDN通过智能技术生成

题目内容

基本要求:

实现顺序表的各种基本运算的算法,求集合的并集、交集、差集:

测试案例:

线性表A的元素为:1 2 3 4
线性表B的元素为:2 3 5 6 7
A∪B为:1 2 3 4 5 6 7
A∩B为:2 3
A-B为:1 4
B-A为:5 6 7

算法描述

A:A的特有元素+AB共有元素;
B:B的特有元素+AB共有元素;
A∪B:将A、B的所有元素合到一起构成的集合C,相同的数字只取一次;
A∩B:将A、B的共有元素放入集合C中;
A-B:将A集合中特有的元素放入集合C中;
B-A:将B集合中特有的元素放入集合C中;

其中难点为:特有元素、共有元素的获取:
使用LocateElem函数(即查找函数): 在L1中寻找L2中的元素L2->data[i],也就是找共有元素,如果找到了,就返回i-1,没找到就返回0。

if(!(LocateElem(L1,L2->data[i])))
	ListInsert(L3,L3->length+1,L2->data[i]);
if语句中加了‘!’,即此时找的为L2的特有元素,再把这个L2特有元素添加到L3中,则L3为并集

代码部分

定义结构

#define MAX 20
typedef char ElemType;
typedef struct
{
   
	ElemType data [MAX];
	int length;
}SqList;

顺序表的10个功能构建

//1.建立顺序表
void CreateList(SqList *&L,ElemType a[],int n)
{
   
	for(int i=0;i<n;++i)
		L->data[i]=a[i];
	L->length=n;
}

//2.初始化顺序表
void InitList(SqList *&L)
{
   
	L=new SqList;
	L->length=0;
 } 

//3.销毁一个顺序表 
void DestroyList(SqList *L)
{
   
	delete L;
}

//4.判断是否为空表
bool ListEmpty(SqList *L)
{
   
	return(0==L->length);
}

//5.求顺序表的长度
int ListLength(SqList *L)
{
   
	return(L->length
  • 60
    点赞
  • 306
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值