合并顺序表(不含重复) 不知道为什么最后合并的顺序表LA为空表
#include<stdio.h>
#define MAXSIZE 100
//定义顺序表
typedef struct{
int *elem;
int length;
}SqList;
//初始化顺序表
int InitList(SqList &L){
L.elem=new int [MAXSIZE]; //分配一个长度为MAXSIZE的数组
if(!L.elem) return 0; //分配失败退出
L.length=0; //空表
return 1;
}
//输入值
int ListOutput(SqList &L,int n){
int i;
for(i=0;i<n;i++){
scanf("%d",&L.elem[i]);
L.length++;
}
return 1;
}
//取值
int GetElem(SqList L,int i,int &e){
if(i<1||i>L.length){
printf("位置有错\n");
return 0;
}
e=L.elem[i-1];
return 1;
}
//输出顺序表
int ShowList(SqList &L){
int i;
if(L.length==0){
printf("表为空\n");
return 0;
}
printf("该顺序表元素有:\n");
for(i=0;i<L.length;i++){
printf("%d ",L.elem[i]);
}
printf("\n");
return 1;
}
//插入
int ListInsert(SqList &L,int i,int e){
if((i<1)||(i>L.length+1)) return 0;
if(L.length==MAXSIZE) return 0;
for(int j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];
}
L.elem[i-1]=e;
L.length++;
return 0;
}
//合并
int MergeList_Sq(SqList LA, SqList LB){
int a_len=LA.length,b_len=LB.length;
for(int i=0;i<b_len;i++){
int num,flag=0;
GetElem(LB,i+1,num);
for(int j=0;j<a_len;j++){
if(num==LA.elem[j]){
flag=1;
break;
}
}
if(flag==0){
ListInsert(LA,a_len++,num);
}
}
return 1;
}
int main(){
SqList LA,LB;
int a,b;
printf("请输入想要输入LA的元素个数:\n");
scanf("%d",&a);
printf("请输入想要输入LA的元素:\n");
ListOutput(LA,a);
InitList(LA);[](
printf("请输入想要输入LB的元素个数:\n");
scanf("%d",&b);
printf("请输入想要输入LB的元素:\n");
InitList(LB);
ListOutput(LB,b);
MergeList_Sq(LA,LB);
print("合并后的LA为:\n");
ShowList(LA);
return 0;
}
不知道 LA为什么是空表