#include
#include
#include
#include
using namespace std;
#define maxsize 100
typedef char elemtype;
typedef struct
{elemtype data[maxsize]; //----------------存放顺序表中的元素
int length; //----------------存放顺序表的长度
}
sqlist;
void creatlist(sqlist *&l,elemtype a[],int n) //-------------------建立顺序表
{int i;
l=(sqlist *)malloc(sizeof(sqlist));
for(i=0;i
l->data[i]=a[i];
l->length=n;
}
void initlist(sqlist *l) //----------------初始化
{l=(sqlist *)malloc(sizeof(sqlist));
l->length=0;
}
int listlength(sqlist *l) //-------------求线性表的长度
{return(l->length);
}
bool getlist(sqlist *l,int i,elemtype e) //------------求线性表中某个数据元素的值
{if(il->length)
return false;
e=l->data[i-1];
return true;
}
int loactlist(sqlist *l,elemtype e) //---------------按元素值查找
{int i=0;
while(ilength&&l->data[i]!=e)
i++;
if(i>=l->length)
return 0;
else return i+1;
}
bool listinsert(sqlist *l,int i,elemtype e)
{int j;
if(il->length+1)
return false;
i--;
for(j=l->length;j>i;j--)
l->data[j]=l->data[j-1];
l->data[i]=e;
l->length++;
return true;
}
void dispList(sqlist *l)
{int i;
for(i=0;ilength;i++)
cout<data[i];
cout<<endl;
}
void unionlist(sqlist *a,sqlist *b,sqlist *&c)
{int lena,i,e=0;
initlist(c);
for(i=1;i<=listlength(a);i++)
{getlist(a,i,e);
listinsert(c,i,e);
}
lena=listlength(a);
for(i=1;i<=listlength(b);i++)
{getlist(b,i,e);
if(!loactlist(a,e))
listinsert(c,++lena,e);
}
}
int main()
{
sqlist *la;
sqlist *lb;
sqlist *lc;
elemtype a[]={'a','d','f','g','c'};
elemtype b[]={'a','b','c','g','l','k'};
creatlist(la,a,5);
creatlist(lb,b,6);
initlist(lc);
cout<<"集合a中的元素:"<<endl;
dispList(la);
cout<<"集合b中的元素:"<<endl;
dispList(lb);
unionlist(la,lb,lc);
dispList(lc);
return 0;
}