#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50
typedef int elemType;
typedef struct
{
elemType elem[MAXSIZE];
int last;
}SeqList;//定义线性表
void InitList( SeqList L)
{
L=(SeqList)malloc(sizeof(SeqList));//dongtaifenpei
L->last=0;
//return L;
}//初始化
void creatSeqList(SeqList *L)
{
int i;
int n;
L->last = 0;
printf("请输入集合的元素个数且个数小于%d:\n",MAXSIZE);//表示 创建的表最大能存多少个数据
scanf("%d",&n);
printf("请输入集合中的元素:\n");
for (i = 0; i < n; i++)
{
scanf("%d",&(L->elem[i]));
L->last++;
}
}//建立线性表
void unin(SeqList *La, SeqList Lb)
{
int i,j, La_len,Lb_len;
elemType e;
La_len=La->last;
Lb_len=Lb.last;
for(i=0; i<=Lb_len;i++)
{ e=Lb.elem[i];//取出lb中的每一个元素
j=0;
while(j<=La_len && e!=La->elem[j]) j++;
if(j>La_len)
if(La_len<MAXSIZE)
La->elem[++ (La->last)]=e;//插入
La->last++;
}
}union//求并集
printfList(SeqList *L)
{
int i;
for(i = 0; i < L->last; i++)
{
printf("%d ",L->elem[i]);
}
printf("\n");
}
int main(void)
{
SeqList La,Lb;
//创建顺序表 La和Lb
printf("正在创建表La,请按提示输入数据\n");
creatSeqList(&La);
//创建顺序表 Lb
printf("正在创建表Lb,请按提示输入数据\n");
creatSeqList(&Lb);
printf("La中的数据是:\n");
printfList(&La);
printf("Lb中的数据是:\n");
printfList(&Lb);
unin(&La,Lb);
//求并集
printf("A与B的并集是:\n");
printfList(&La);
return 0;
}
unin函数第10行,i<=Lb_len改为i<Lb_Ien,不能等于,会越界
union方法里最后last加了两次