用结构体储存集合以及它的元素个数
怎么让ListInsert函数中在La后面加入不重复的元素
#include <stdio.h>
#define maxn 99999
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//定义结构体存入数组及其差长度
struct SqList{
int data[maxn];
int len;
};
void Union(struct SqList La,struct SqList Lb);//主体函数
int ListLength(struct SqList L);// 计算数组长度
void GetElem(struct SqList L,int i,int *e);//从Lb中获取元素
int LocateElem(struct SqList L,int e);//判断e在La处是否出现
void ListInsert(struct SqList L,int i,int e);//将不重复的元素插入
int main(){
struct SqList La,Lb;
int i;
scanf("%d%d",&La.len ,&Lb.len );
for(i=1;i<=La.len ;i++){
scanf("%d",&La.data[i]);
}
for(i=1;i<=Lb.len ;i++){
scanf("%d",&Lb.data[i]);
}
Union(La,Lb);
printf("%d\n",La.len);
for(i=1;i<=La.len;i++){
printf("%d ",La.data[i]);
}
return 0;
}
void Union(struct SqList La,struct SqList Lb){
int i,e,La_len,Lb_len;
La_len = ListLength(La);
Lb_len = ListLength(Lb); //返回两个列表长度
for(i=1;i<=Lb_len;i++){
GetElem(Lb,i,&e); //依次取Lb中的元素
if(!LocateElem(La,e)){ //判断是否在La中有一样的数据
ListInsert(La,++La_len,e); //在La后加入不重复的数据
printf("%d\n",e);
}
}
}
int ListLength(struct SqList L){
return L.len ;
}
void GetElem(struct SqList L,int i,int e){
e = L.data[i];
}
int LocateElem(struct SqList L,int e){
int i;
for(i=1;i<=L.len;i++){
if(L.data[i]==e){
return i;
}
}
return 0;
}
void ListInsert(struct SqList L,int i,int e){
// printf("%d * ",i);
L.len += 1;
printf("%d\n",L.len );
L.data[i]=e;
}
int compare(struct SqList L, int e){
int i;
for(i=0;i<L.len;i++){
if(L.data[i]==e){
return 1;
}
}
return 0;
}