【数据结构】实验:用抽象数据结构解决问题:集合的交、并、补

目录

一、实验目的

二、实验内容

三、核心代码

四、运行结果

五、思考总结

六、完整报告和成果文件提取链接


一、实验目的

1. 熟悉Visual2010 C++ 和Dev-C++5.11编程环境。

2. 掌握抽象数据类型的表示与实现方法。

二、实验内容

仿照上传的抽象数据类型Complex的定义和实现的样式,完成并实现抽象数据类型集合的定义和实现。

描述一个集合的抽象数据类型ASet,其中所有元素为整数且所有元素不相同,集合的基本操作包括:

  1. 由整数数组a[0..n-1]创建一个集合。
  2. 输出集合中的所有元素。
  3. 判断一个元素是否在一个集合中。
  4. 求两个集合的并集,并输出结果。
  5. 求两个集合的差集,并输出结果。
  6. 求两个集合的交集,并输出结果。

在此基础上设计集合的顺序存储结构,并实现各基本运算的算法。

三、核心代码

求两个集合的并集,并输出结果。

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 

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值