文档介绍:数据结构实验-集合的并交差运算实验报告
实 验 报 告
实验课程:数 据 结 构
实验项目:实验一集合的并交差运算
专 业:计算机科学与技术
return 0; //否则,i值不满足条件,返回0
}
模块三集合交运算
算法如下:
/**求集合的交集的函数**/
void Mix_Sq(SqList La,SqList Lb,SqList &Lc)
{
int i;
ElemType elem;
= 0; //将表Lc的长度设为0
for(i = 1; i <= ; i++)
{ //依次查看表La的所有元素
elem = [i-1]; //将表La中i位置的元素赋值给elem
if(LocateElem_Sq(Lb,elem,Equal)) //在表Lb中查找是否有与elem相等的元素
ListInsert_Sq(Lc,+1,elem); //将表La与Lb中共同的元素放在Lc中
}
}
模块四集合并运算
算法如下:
/**求集合的并集的函数**/
void Union_Sq(SqList La,SqList Lb,SqList &Lc)
{
int i;
ElemType elem;
=0; //将表Lc的长度初设为0
for(i = 0; i < ; i++) //先将表La的元素全部复制到表Lc中
[++]=[i];
for(i = 1; i <= ; i++)
{
elem = [i-1]; //依次将表Lb的值赋给elem
if(!LocateElem_Sq(La,elem,Equal)) //判断表La中是否有与elem相同的值
ListInsert_Sq(Lc,+1,elem); //若有的话将elem放入表Lc中
}
}
模块五集合的差运算
算法如下:
/**求集合的差集函数**/
void Differ_Sq(SqList La,SqList Lb,SqList &Lc)
{
int i;
ElemType elem;
= 0;
for(i = 1; i <= ; i++)
{
elem = [i-1]; //把表La中第i个元素赋值给elem
if(!LocateElem_Sq(Lb,elem,Equal)) //判断elem在表Lb中是否有相同的元素
ListInsert_Sq(Lc,+1,elem); //若有,则把elem放入表Lc中,否则,就不存放
}
for(i = 1; i <= ; i++)
{
elem = [i-1]; //把表Lb中第i个元素赋值给elem
if(!LocateElem_Sq(La,elem,Equal)) //判断elem在表La中是否有相同的元素
ListInsert_Sq(Lc,+1,elem); //若有,则把elem放入表Lc中,否则,就不存放
}
}
四、调试分析
问题分析及解决:首先,在编写程序时没有设置线性表的初始长度,导致集合元素输入错误;然后通过#define LIST_IN