合并顺序表问题 望指导

合并顺序表(不含重复) 不知道为什么最后合并的顺序表LA为空表

#include
#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;iscanf("%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;iprintf("%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;iint num,flag=0;
        GetElem(LB,i+1,num);
        for(int j=0;jif(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为什么是空表

修改处见注释,供参考:

#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){ //(SqList LA, SqList LB) 修改
    int a_len=LA.length,b_len=LB.length;
    for(int i=0;i<b_len;i++){
        a_len=LA.length;    //修改
        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+1,num); //(LA,a_len++,num); 修改
        }
   }
   return 1; 
} 
int main(){
    SqList LA,LB;
    int a,b;
    
    printf("请输入想要输入LA的元素个数:\n");
    scanf("%d",&a);
    printf("请输入想要输入LA的元素:\n");
    InitList(LA);//[](    修改
    ListOutput(LA,a);  // 修改

    printf("请输入想要输入LB的元素个数:\n");
    scanf("%d",&b);
    printf("请输入想要输入LB的元素:\n");
    InitList(LB);
    ListOutput(LB,b);
    
    
    MergeList_Sq(LA,LB);
    printf("合并后的LA为:\n"); //修改 print();
    ShowList(LA);
    return 0;
} 
//不知道 LA为什么是空表