- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算0901第11组集合的并交和差运算的程序
数据结构课程设计
题目: 集合的并、交和差运算的程序
组号: 第11组
成员:
任务:编制一个演示集合的并、交和差运算的程序。
要求:集合的元素限定为整型数据;用三个子程序分别完成并、交和差运算,并输出结果。
需求分析
首先对题目分析,编制集合的并、交和差运算的程序需理解集合的并、交和差运算:设A、B分别为实数域的两个集合,A={1,2,3,4,5},B={1,3,5,7}
集合的并运算
集合的并运算是找出两个集合所能包含的最大元素个数的集合。即={1,2,3,4,5,7}
集合的交运算
集合的并运算是找出两个集合所能包含的最大元素个数的集合。即={1, 3, 5}
集合的差运算
集合的并运算是找出两个集合所能包含的最大元素个数的集合。即={2,4}
其次,依据数据结构的知识以线性表的顺序表(存储数据类型和长度)为存储结构,数
据元素类型为整型,创建两个顺序表La和Lb作为集合运算的主体,构建一个辅助顺序表Lc用来保存集合运算后的结果,
最后,依据集合的并、交和差运算设计合理的函数体,分别实现顺序表的创建、初始化、输出元素、并运算、交运算和差运算。使用上述实例运行调试程序,并通过调用输出函数输出运算结果,查看是否准确无误的实现想要的运算结果。
概要设计
定义数据结构为顺序表,含有两个数据域:整型元素、顺序表长度、空间大小。
主函数中引用创建、初始化、并、交、差及输出顺序表的子函数。
创建顺序表中,创建一个长度为100的顺序表,由于分配的空间相对较大,没有使用追
加空间的容错程序。使用交互操作实现对不同的顺序表选择是否立即创建元素。
初始化顺序表元素中,使用循环语句依次从终端获取人工输入的元素值。
输出顺序表元素中,使用循环语句依次输出元素,并适当控制元素间的间距便于辨认。
集合并操作中,先将一个顺序表La的内容复制到用于暂存结果的顺序表Lc中,再依次对另一顺序表Lb的元素经行筛选:若元素存在于La中(标记blog=1)则跳过该元素,继续查看下一个元素,否则将该元素附加到暂存数组Lc的尾部。另外添加基本容错能力查看是否能够正确执行完该操作。
集合交操作中,先将一个顺序表La的内容依次取出与Lb顺序表的元素一一对比,若该元素存在于Lb中,则将该元素赋值到Lc顺序表的表尾(length位置),否则跳过该元素,继续查看下一个元素。另外添加基本容错能力查看是否能够正确执行完该操作。
集合差操作中,设计程序差运算为Lc=La-Lb;先将一个顺序表La的内容依次取出与Lb顺序表的元素一一对比,若该元素不存在于Lb中(标记blog=0),则将该元素赋值到Lc顺序表的表尾(length位置),继续查看下一个元素,否则跳过该元素,另外添加基本容错能力查看是否能够正确执行完该操作。
详细设计
#include stdio.h
#include malloc.h
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef int elemtype;
typedef int Status;
#define listintsize 100
//定义数据结构
typedef struct
{
elemtype *elem;
int length;
int listsize;
}Sqlist;
//创建数组的元素
Status listinsert(Sqlist *L,int i)
{
elemtype a;
printf(输入元素值:\n);
scanf(%d,a);
*(L-elem+i)=a;
L-length++;
return OK;
}
//初始化数组
Status initsqlist(Sqlist *L)
{
int i,j,k;
L-elem=(elemtype *)malloc(listintsize * sizeof(elemtype));
if(!L-elem)
return OVERFLOW;
L-length=0;
L-listsize=listintsize;
printf(是否现在输入元素?\n现在输入请按;\n稍后输入请按;\n);
scanf(%d,i);
if(i==2)
return OK;
else
{
if(i==1)
{
printf(输入目标数组的元素个数j:\nj=);
scanf(%d,j);
for(k=0;kj;k++)
listinsert(L
文档评论(0)