目录
一、实验目的
1. 熟悉Visual2010 C++ 和Dev-C++5.11编程环境。
2. 掌握抽象数据类型的表示与实现方法。
二、实验内容
仿照上传的抽象数据类型Complex的定义和实现的样式,完成并实现抽象数据类型集合的定义和实现。
描述一个集合的抽象数据类型ASet,其中所有元素为整数且所有元素不相同,集合的基本操作包括:
- 由整数数组a[0..n-1]创建一个集合。
- 输出集合中的所有元素。
- 判断一个元素是否在一个集合中。
- 求两个集合的并集,并输出结果。
- 求两个集合的差集,并输出结果。
- 求两个集合的交集,并输出结果。
在此基础上设计集合的顺序存储结构,并实现各基本运算的算法。
三、核心代码
求两个集合的并集,并输出结果。
void unionSet(ASet *set1, ASet *set2, ASet *result)
{
createSet(result,set1->d,set1->length);
int i;
for (i=0;i<set2->length;i++)
{
if (!isInSet(result, set2->d[i]))
{
result->d[result->length++]=set2->d[i];
}
}
}
求两个集合的差集,并输出结果。
void differenceSet(ASet *set1, ASet *set2, ASet *result)
{
result->length = 0;
int i;
for (i = 0; i < set1->length; i++)
{
if (!isInSet(set2, set1->d[i]))
{
result->d[result->length++] = set1->d[i];
}
}
}
求两个集合的交集,并输出结果。
void intersectionSet(ASet *set1, ASet *set2, ASet *result)
{
result->length = 0;
int i;
for (i=0;i<set1->length;i++)
{
if (isInSet(set2,set1->d[i]))
{
result->d[result->length++]=set1->d[i];
}
}
}
四、运行结果
输入多组测试数据
五、思考总结
在设计代码时,题目要求数组中的元素不相同,所以还要进行去除相同元素的操作,于是我专门创建了一个集合来去除数组中的重复元素,进行遍历数组中元素,如果元素已经在集合中就跳过,如果元素不在集合中就添加,最后进行打印无重复元素的数组。其他的交集、补集、差集都是差不多思想。
六、完整报告和成果文件提取链接
完整可运行代码以及相关实验报告以下链接可获取:
链接:https://pan.baidu.com/s/1DuGfYm6_KDm04gUKWFSSVQ?pwd=lw6u
提取码:lw6u