数据结构课程设计报告

发布 2022-10-05 19:00:28 阅读 9092

姓名:张超。

学号:1005802116

班级:信管1001

时间:2024年12月28日。

我的设计题目为:

用有序顺序表完成集合与集合的交集,差集,并集,包含于之间的运算以及元素与集合的判断关系。

我的思路是:

既然是用有序顺序表实现集合之间关系,最简单的就是用数组来实现,有序就用插入排序来实现,然后把交集,差集,并集,包含,属于的函数实现,在主函数中调用函数来完成任务。第一步设计一个函数实现输入的元素排序,用for循环实现,排序就输入一个元素来与之前元素比较,有序的插入到数组中,并用for循环依次显示出来,然后就是集合的运算实现,1对于属于关系,在一个集合中依次查找与给定的元素作比较,找到就显示true,否则false。2对于包含关系,在一个数组中每个元素都属于另个集合是否为真,来判定,其中要调用属于的函数。

3对于交集,把一个数组属于另一个数组的元素存在一个数组集合中,即交集,也要调用属于的函数,4对于并集,因为有序,所以依次比较两个数组的元素,把小的插入预定的数组中,并计数,两个数组根据情况适当移位,以便下次比较不重不漏,5对于差集,把一个数组与另个数组不同的元素插入预定的数组中,即减去两个集合的交集,剩余的就是差集,其中也要调用属于函数!最后在主函数中设置三个数组表示集合,调用每个函数,实现各个功能!

题目:第16题-用有序顺序表实现集合的各种运算。

**如下:#include <>

/void insert_sort(int &a int b);

void input_sort(int *int_number,int &count)//插入并排序。

printf("元素的个数");输入a,b集合元素个数。

scanf("%d", count);

for(int i = 0; i < count; i++)依次输入每个集合元素。

从小到大排序。

else if(current > int_number[i-1] |current ==int_number[i-1])else

for(int k=0; k

printf("");

/判断属于。

bool isamember(int test, int* numbers, int count)

for(int i=0; i < count; i++)依次查找相同的元素。

return false;

/判断集合a2包含于a1

bool issubset(int *a1, int count1, int *a2, int count2)

bool result = true;

if(count2 < count1 ||count1 ==count2)//a2元素个数少于等于a1

elsereturn result;

/求两个集合的并(结果保存到result中从小到大)

void union(int* a1, int count1, int* a2, int count2, int* result, int &rcount)//依次比较a1,a2的元素大小并赋值计数。

int i1=0, i2=0;

rcount = 0;//初始化。

for(int i=0; count1>0 &&count2>0; )

else if(a1[i1]

else if(a1[i1] =a2[i2])

while(count1 !=0 )/比较完之后剩下a1的元素处理。

while(count2 !=0)//剩下a2的元素处理。

/交集。void intersection(int * a1, int count1, int * a2, int count2, int* result, int &rcount)

rcount = 0;

for(int i=0; i

/差集。void complement(int* a1, int count1, int* a2, int count2, int * result, int &rcount)

rcount = 0;

for(int i=0; i

int main()/依次调用各个函数,实现每个算法。

int i;

printf("数据结构课程设计姓名:张超学号:100502116题目:第16题-有序顺序表");

printf("请输入集合a");

int test1[10];/定义一个数组表示集合a

int c1 = 0;

input_sort(test1, c1);/排序。

printf("请输入集合b");

int test2[10];/定义一个数组表示集合b

int c2 = 0;

input_sort(test2, c2);/排序

int r[20];/定义运算之后的集合。

int count = 0;

printf("集合a-b差集");

complement(test1, c1, test2, c2, r, count);/调用差集。

for(i=0; i

printf("两个集合的并集");

union(test1, c1, test2, c2, r, count);/调用并集

for(i=0; i

printf("两个集合的交集");

intersection(test1, c1, test2, c2, r, count);/调用交集

for(i=0; i

printf("集合b包含于a吗?:");

if(issubset(test1, c1, test2, c2))/调用判断包含于。

printf("是");

else printf("不是");

printf("请输入一个元素:")

scanf("%d", r);

if(isamember(*r,test1,c1))/调用判断属于。

printf("属于集合a");

else printf("不属于集合a");

printf("谢谢使用");

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...