数据结构实验1 集合的交、并、差

姓名:Far_Rainbow
学号: 202505000X
专业: 软件工程
年级: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. 采用模板实现泛型编程,可创建任意数据类型的集合
  2. 对下标运算符进行重载,可以直接访问集合元素
  3. 在主函数里实现菜单,验证算法正确性

二、主要源代码

#include <iostream>
#define SETSIZE 10000
using std::cin;
using std::cout;
using std::endl;

template <typename T> class Set {
   
private:
	T val[SETSIZE];
	int _length;
	void deweight();
	
public:
	Set() {
   _length = 0; }
	~Set() {
   _length = 0; }
	T operator[](int pos) const {
   return val[pos]; } 
	int getlength() const {
   return _length; }
	void scan(int size);
	void Intersection(Set<T> const& A, Set<T> const& B);
	void Union(Set<T> const& A, Set<T> const& B);
	void Except(Set<T> const& A, Set<T> const& B);
};

template <typename T> void Set<T>::deweight()
{
   
	for(int i = 0; i < _length; 
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值