#include <iostream>
using namespace std;
typedef struct list
{
int *base;
int lengh;
int listsize;
}qlist;
//创建
void creat_(qlist &l,int n)
{
l.base=(int*)malloc(n*sizeof(int));
if(l.base==NULL)
{
cout<<"fault";
}
l.lengh=0;
l.listsize=n;
}
//输入
void input(qlist &l,int n)
{
int i;
for(i=0;i<n;i++)
{
cin>>l.base[i];
l.lengh++;
}
}
//例遍
void traverse(qlist &l)
{
int i;
for(i=0;i<l.lengh;i++)
{
cout<<l.base[i];
}
}
//并集
void union_(qlist &l1,qlist &l2,qlist &l3)
{//注意这里不能建立新变量让list1=l1...因为是地址的传递,新变量list1相当于是形参,不是实参不能改变l3的值
<span style="font-family: Arial, Helvetica, sans-serif;"> int i=0,j=0,k=0,l=0;//i为l3base的坐标,l为判断条件</span>
creat_(l3,l1.lengh+l2.lengh);//创建l3内存为l1与l2长度的和
for(i=0;i<l1.lengh;i++)
{
l3.base[i]=l1.base[i];//将l1数组的数复制给l3
}
//此时i为l1.lengh
l3.lengh=l1.lengh;//确定l3的长度
for(j=0;j<l2.lengh;j++)
{
for(k=0;k<l3.lengh;k++)
{
if(l2.base[j]==l3.base[k])
{
l=-1;
}
}
if(l==0)
{
l3.base[i]=l2.base[j];
i++;
l3.lengh++;
}
else
{
l=0;
}
}
}
//交集
void inter(qlist &l1,qlist &l2,qlist &l3)
{
int i=0,j=0,k=0;
creat_(l3,l1.lengh+l2.lengh);
for(i=0;i<l1.lengh;i++)
{
for(j=0;j<l2.lengh;j++)
{
if(l1.base[i]==l2.base[j])
{
l3.base[k]=l1.base[i];
k++;
}
}
}
l3.lengh=k;
}
int main()
{
qlist list1,list2,list3;
creat_(list1,6);
input(list1,6);
creat_(list2,6);
input(list2,6);
//inter(list1,list2,list3);
union_(list1,list2,list3);
traverse(list3);
}