算法思路:求集合a和集合b的并集,我们可以在设置一个临时的集合C,先把集合a的数放入集合C,然后建立一个查找函数,查找集合b的数是否在集合C,如果不在集合C则选择添加到集合C;如果在集合C,不执行任何操作。代码如下
#include<iostream>
using namespace std;
class SET
{
int a[40],b[40],c[40];
int numa,numb,numc;
public:
SET (int x[],int len1,int y[],int len2)
{
numa=len1;numb=len2;numc=0;
for(int i=0;i<len1;i++)
a[i]=x[i];
for(int i=0;i<len2;i++)
b[i]=y[i];
}
int notin(int elem,int s[],int size)
{
for(int i=0;i<size;i++)
if(elem==s[i])
return 0;
return 1;
}
void insert();
void output()
{
cout<<"k="<<numc<<endl;
for(int i=0;i<numc;i++)
{
cout<<c[i]<<"\t";
cout<<endl;
}
}
} ;
void SET::insert()
{
int k,j;
numc=numa;
for(j=0;j<numa;j++)
{
c[j]=a[j];
}
k=j;
for(int i=0;i<numb;i++)
{
if(notin(b[i],c,numc)!=0)
{
c[k]=b[i];
k++;
numc++;
}
}
}
int main()
{
int s1[]={1,2,3,4,5,6,7};
int s2[]={1,3,5,11,13,15};
SET set(s1,sizeof(s1)/sizeof(s1[0]),s2,sizeof(s2)/sizeof(s2[0]));
set.insert();
set.output();
return 0;
}