2.1 假设利用两个线性表LA和LB分别表示两个集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的集合A=AUB。这就要求对线性表作如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中进行查访,若不存在,则插入之。
正确代码(在大神的协助下写出来的O(∩_∩)O~):
typedef struct List{
int elem[15];
int length;
}List;
int main() {
void UnionList(List *L,List Lb);
List La={ {1,2,3,4,5},5};
List Lb={ {4,5,6,8,10,12,15,19},8};
UnionList(&La,Lb);
return 0;
}
void UnionList(List *L,List Lb)
{
int GetElem(List, int, int*); //用e返回表Lb中第i个数据元素;
int LocateElem(List, int); //依次判断e是否与La中的数据元素相等;
void ListInsert(List*, int, int); //若e与La中的第i个数据元素不相等,则将e插入到La中;
int e;
for(int i=1;i<=Lb.length;i++)
{
GetElem(Lb,i,&e);
if(!LocateElem(*L,e))
{
ListInsert(L,(*L).length+1,e);
++(*L).length;
}
}
for(int m=0;m<(*L).length;m++)
{
printf("%d ",(*L).elem[m]);
}
printf("\n表La的当