线性表La与Lb合并。
输入:两个线性表La和Lb.
过程:循环集合B中的每个元素,判断当前元素是否存在A中,若不存在,则插入到A中即可。
输出:合并后的线性表La。
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct{
int Data[MAX];
int length;
}List;
void GetElem(List *La,int i,int *e){
*e=La->Data[i];
}
int LocateElem(List *La,int e){
for(int i=0;i<La->length;i++)
if(e==La->Data[i])
return 1;
return 0;
}
void ListInsert(List *La,int j,int e){
La->Data[j]=e;
La->length++;
}
void Union(List *La,List *Lb){
int La_len,Lb_len,i,e;
La_len=La->length;
Lb_len=Lb->length;
for(i=0;i<Lb_len;i++){
GetElem(Lb,i,&e);
if(!LocateElem(La,e))
ListInsert(La,La_len++,e);
}
}
int main(){
List La,Lb;
int i;
La.length=5;
Lb.length=3;
i=0;
for(i=0;i<5;i++){
La.Data[i]=i*i;
}
for(i=0;i<3;i++){
Lb.Data[i]=i*2;
}
i=0;
while(i<La.length){
printf("%d\t",La.Data[i]);
i++;
}
printf("\n");
i=0;
while(i<Lb.length){
printf("%d\t",Lb.Data[i]);
i++;
}
printf("\n");
Union(&La,&Lb);
i=0;
while(i<La.length){
printf("%d\t",La.Data[i]);
i++;
}
getchar();
return 0;
}