数据结构实验1

您所在的位置:网站首页 a代表数字集合中的什么元素 数据结构实验1

数据结构实验1

#数据结构实验1| 来源: 网络整理| 查看: 265

实验1

(1)实验目的

通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。

(2)实验内容

通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。

(3)实验要求

从程序完善性上考虑,集合元素输入时,要有检查元素重复的功能,每个集合中不允许有重复的元素。集合可以用数组也可以用链表存储。

实现交、并、差运算时,分别把代码写成函数的形式,即实现交运算的函数,实现并运算的函数,实现差运算的函数,在主函数中分别调用三个函数。

使用菜单形式对应各个操作,应允许用户反复查看结果,想结束程序时,输入负数结束,使其编成一个完整的小软件。菜单参考示例如下:

1—输入集合A和B 2—求集合A交B 3—求集合A并B 4—求集合A-B 退出,输入一个负数!

(4)验收/测试用例

输入: A={1,2,3,4,5} B={3,4,5,6,7}

要注意输入的过程中,每输入一个元素都要检查输入的这个元素是否和前面的元素重复,如果重复,要求用户重新输入当前元素。

验收测试时要测试这种重复的情况。

输出 A交B={3, 4, 5} A并B={1,2,3,4,5,6,7} A-B={1, 2}

重点: 数组或线性表的使用 难点: 去重操作和函数调用

一、设计思想

首先在main函数中设置while循环,打印菜单,switch分支判断输入,在分支中调用相应函数完成功能。

设置全局变量 input_a[99]、input_b[99]存储相应集合,int i,int m 集合元素个数(至于为什么要用全局变量,不用局部变量,全局变量生存周期随程序,下面打印集合等功能更加方便)

声明函数 3.1 输入集合函数 3.2 求并集 3.3 求交集 3.4 求差集 3.5 打印集合

其中比较复杂的地方 4.1 选用全局变量而不是成员变量 4.2 求集合并集函数功能实现

二、主要源代码 # include # include # include using namespace std; int in_a(); int in_b(); int jiao_a_b(); int bing_a_b(); int cha_a_b(); //定义全局变量 int input_a[99] = {0}; int input_b[99] = {0}; //集合A、B的元素下标 int i = 0; int m = 0; int main() { int n = 1;//退出菜单的标记 while(n){ int s; cout printf("%d ",input_a[k]); } printf("\n"); //输出集合B printf("集合B:"); for(int k = 0; k n = 0; cout i++; if(i == 1) input_a[i-1] = num; else{ for(int y = 0;y input_a[i-1] = num; } else{ printf("你输入的集合a含重复的元素,请重新输入集合a~\n"); i = 0; in_a(); } } } } } //2. 输入集合b函数 int in_b(){ int num; //集合b的输入 cout for(int y = 0;y input_b[m-1] = num; } else{ printf("你输入的集合b含重复的元素,请重新输入集合b~\n"); m = 0; in_b(); } } } } } //3. 交函数 int jiao_a_b(){ printf("集合A交B为:"); for(int k = 0; k if(input_a[k] == input_b[j]){ printf("%d ",input_a[k]); } } } printf("\n"); } //4. 并函数 int bing_a_b(){ int t = 0; printf("集合A并B为:"); for(int k = 0; k for(int k = 0;k t++; } } if(t == i) printf("%d ",input_b[j]); t = 0; } printf("\n"); } //5. 差函数 int cha_a_b(){ int t = 0; printf("集合A差B为:"); for(int k = 0; k if(input_a[k] != input_b[j]) t++; } if(t == m) printf("%d ",input_a[k]); t = 0; } printf("\n"); }

部分截图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

求并集的原理调试图

就是使用t记录B集合内的某元素是否和A中的每一个元素都不同(A中共i个元素),不同就输出

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

三、实验总结 巩固了菜单小程序的总体体系(while + switch + 功能函数)查阅学习了C中全局变量和局部变量的区别,参考:http://c.biancheng.net/view/1858.html熟悉了while(scanf(…) != EOF){…}等语法操作求并集函数和求差集函数采用 计数判断 法 求并集:先打印A集合全部,然后嵌套循环判断集合B的元素,是否计数为5 (找出和A中完全不等的元素)打印求交集:嵌套判断A集合中多余B集合的元素,是否计数为5(找出A中独有的元素)打印


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3