#include<stdio.h>
#define maxsize 100 //宏定义常量表示线性表的最大长度
struct Sqlist
{
int elem[maxsize]; //线性表占用的数组空间
int last; //记录线性表中最后一个元素在数组elem[]中的位置
};
void initlist(Sqlist &L) //初始化线性表
{
L.last=0;
}
void unionlist(Sqlist &la,Sqlist &lb) //求集合la和lb的并集
{
int i,j,e;
for(i=0;i<lb.last;i++)
{
e=lb.elem[i]; j=0; //用e记录线性表lb中的元素
while((j<la.last)&&(la.elem[j]!=e)) j++; //扫描顺序表la,直到找到值为e的元素,或扫描到表尾还没找到
if(j==la.last)
{
la.elem[la.last]=e;la.last++; //将lb中值不为e的元素加入到la中,表长为la,lb去掉相同元素后的两表长之和
}
}
}
int main()
{
int i;
char c;
struct Sqlist la,lb;
printf("初始化顺序表\n");
initlist(la);
initlist(lb);
printf("请输入集合a的元素\n");
for(i=0;i<maxsize;i++)
{
scanf("%d%c",&la.elem[i],&c);
la.last++;
if(c=='\n')
break;
}
printf("请输入集合b的元素\n");
for(i=0;i<maxsize;i++)
{
scanf("%d%c",&lb.elem[i],&c);
lb.last++;
if(c=='\n')
break;
}
unionlist(la,lb);
printf("集合a与b的并集为:\n");
for(i=0;i<la.last;i++)
printf("%-4d",la.elem[i]);
printf("\n");
return 0;
}
线性表求两个集合的并集
最新推荐文章于 2024-03-24 11:11:57 发布