两个有序顺序表合并c语言

为什么会报错?


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct{
    int *elem;
    int length;
    int ListSize;
}SqList;

void InitSqList(SqList &L){
    L.elem=(int *)malloc(100*sizeof(int));
    L.length=0;
    L.ListSize=100;
}

void CreateSqList(SqList &L){
    int n,e;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&e);
        L.elem[i]=e;
        L.length++;
    }
}

void GetElem(SqList L,int i;int &e){
    e=L.elem(i);
}

void MergList(SqList La,SqList Lb,SqList &Lc){
    int i,j,ai,bj;
    i=0;j=0;
    while(i<La.length&&j<Lb.length){
        GetElem(La,i,ai);
        GetElem(Lb,j,bj);
        if(ai<bj){
            Lc.elem[Lc.length]=ai;i++;length++;
        }else{
            Lc.elem[Lc.length]=bj;j++;length++;
        }
    }
    while(i<La.length){
        GetElem(La,i,ai);Lc.elem[Lc.length]=ai;i++;Lc.length++;
    }
    while(j<Lb.length){
        GetElem(Lb,j,bj);Lc.elem[Lc.length]=bj;j++;Lc.length++;
    }
}

void print(SqList L){
    for(int i=0;i<L.length;i++)
        printf("%d",L.elem[i]);
        printf("\n");
}

void main()
{
    int i,j;
    InitSqList(La);
    InitSqList(Lb);
    InitSqList(Lc);
    CreateList(La);
    print(La);
    CreateList(Lb);
    print(Lb);
    MergList(La,Lb,Lc);
    print(Lc);
}

img