求两线性表的并集(顺序存储结构)
#include<stdio.h>
#include<stdlib.h>
#define maxn 1e5
typedef struct{
int *elem;
int length;
}SqList;
void InitList(SqList &L)
{
L.elem=(int *)malloc(sizeof(int));
L.length=0;
}
void UnionList(SqList &lista,SqList &listb)
{
int i,j,e;
printf("两线性表的并集为:\n");
for(i=0;i<listb.length;i++)
{
e=listb.elem[i];j=0;
while(j<lista.length&&lista.elem[j]!=e)
j++;
if(j==lista.length)
{
lista.elem[lista.length]=e;
lista.length++;
}
}
}
void input(SqList &L)
{
char c;
printf("输入线性表的各个元素:\n");
for(int i=0;i<maxn;i++)
{
scanf("%d%c",&L.elem[i],&c);
L.length++;
if(c=='\n')break;
}
}
void output(SqList L)
{
for(int i=0;i<L.length-1;i++)
printf("%d ",L.elem[i]);
printf("%d\n",L.elem[L.length-1]);
}
int main()
{
SqList lista,listb;
InitList(lista);InitList(listb);
input(lista);input(listb);
UnionList(lista,listb);
output(lista);
return 0;
}