软件学院实验报告 | |||
---|---|---|---|
姓名: 白泽中 学号: 2025050006 专业: 软件工程 年级:2020级 | |||
课程名称 | 数据结构 | ||
实验名称 | 实验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} |
|
实验类型 | 验证性 | ||
实验的重点、难点 | 重点: 数组或线性表的使用 难点: 去重操作和函数调用 |
||
实验环境 | TDM-GCC 4.9.2 64-bit | ||
实验的实施阶段 | 实验步骤及完成任务情况 | 一、设计思想 1. 采用模板实现泛型编程,可创建任意数据类型的集合 1. 对下标运算符进行重载,可以直接访问集合元素 1. 在主函数里实现菜单,验证算法正确性 二、主要源代码```cpp |
include
define SETSIZE 10000
using std::cin; using std::cout; using std::endl;
template
public:
Set() {_length = 0; }
~Set() {_length = 0; }
T operator const {return val[pos]; }
int getlength() const {return _length; }
void scan(int size);
void Intersection(Set
template
template
template
template
template
int main()
{
cout<<”实验1 集合的交、并、差\n”;
cout<<”1—输入集合A和B\n”;
cout<<”2—求集合A交B\n”;
cout<<”3—求集合A并B\n”;
cout<<”4—求集合A-B\n”;
cout<<”退出,输入一个负数!\n”;
int a, b;
Set
if(B[0] == 0){
cout<<”请先输入集合B的值\n”;
break;
}
C.Intersection(A, B);
cout<<” A 交 B = { “;
for(int i = 0; i < C.getlength(); ++ i){
cout<
(1)数组去重操作
(2)数组模拟集合 | |
| 教师评价 | 总评 | | |
| | 得分 | | |