求改正:一个实现顺序表的合并的c程序(其他都对,到了进入合并的方法的时候就直接退出了),该怎么解决

求改正:一个实现顺序表的合并的c程序(其他都对,到了进入合并的方法的时候就直接退出了)
#include<stdio.h>
#include<stdlib.h>


#define Ini_length 100
#define List_liength 10 
#define Error 0
#define Ok 1

typedef int EmleType;
typedef int Status ;
typedef struct Sqllist //定义一个结构体类型(存放<链表指针,链表长度,链表最大容量>)
{
EmleType *emle ; 
int length;
int size;
}Sqllist;
Status Ini_Sqllist (Sqllist *L) //初始化一个空表
{
L->emle=(EmleType *)malloc(Ini_length*sizeof(EmleType));
if(!L->emle) return Error;
L->length= 0;
L->size = Ini_length; return Ok;
}

Sqllist Creat_list (Sqllist *L) //创建一个线性表 返回这个表
{
  int s ;
EmleType *newbase ;
printf("输入顺序表的元素,以0结束 ");
scanf( "%d",&s );
while (s!=0)
{
if(L->length>L->size)
{
newbase = (EmleType*)realloc(L->emle,(L->size+List_liength)*sizeof(EmleType));
if (!newbase) exit(1);
L->emle=newbase;
L->size=L->size+List_liength;
}

L->emle[L->length]=s;
L->length++;

scanf("%d",&s);
}
return (*L);
}

Status GetEmel(Sqllist *L,int j ,EmleType e) //获取第j个元素,使其用e来返回第j个元素
{
int i;
for (i = 1;i<L->length;i++)
{
if(i==j) e=L->emle[i];
return e; 
}
}
Sqllist Inset_Sqllist(Sqllist *L,int i ,EmleType e ) //想线性表中插入数据
{
int j ;
EmleType *newbase ;
if(i<0||i>L->length) exit(1);
if(L->length>L->size)
{
newbase =(EmleType*)realloc(L->emle,(L->size+List_liength)*sizeof(EmleType));
if (!newbase) exit(1);
L->emle=newbase;
L->size=L->size+List_liength;
}

for (j= L->length;j>i-1;j--)
{
L->emle[j]=L->emle[j-1];
}
L->emle[i-1]=e;
L->length++;
return (*L);
}

void MergeList(Sqllist *La,Sqllist *Lb,Sqllist *Lc) //将两个表按照非增的顺序结合排列
{
int i=1;int k=0;int j = 1;
int ai,bj;
Ini_Sqllist(Lc);
while ((i<= La->length)&&(j<=Lb->length))
{
GetEmel(La,i,ai); GetEmel(Lb,j,bj);
if(ai<=bj) { Inset_Sqllist(Lc,++k,ai); ++i;}
else{ Inset_Sqllist(Lc,++k,bj); ++j; }
}

while((i<= La->length))
{
GetEmel(La,i,ai);
Inset_Sqllist(Lc,++k,ai); ++i;
}
while((j<=Lb->length))
{
GetEmel(Lb,j,bj);
Inset_Sqllist(Lc,++k,bj); ++j;
}
}

void print(Sqllist *L)
{
int i;
printf("您的顺序表为:");
for (i=0;i<L->length;i++)
printf("%d",L->emle[i]);printf("\n");
printf("\n");
}

void main ()
{
int e,i,k ;
Sqllist a,b,c;
Ini_Sqllist(&a);
Creat_list(&a);
print(&a);
printf("请输入您要插入的数据的位置与数据的值:");
scanf("%d,%d",&i,&e);
Inset_Sqllist(&a,i,e);
print(&a);
printf("插入第二个顺序表:");
Ini_Sqllist(&b);
Creat_list(&b);
print(&b);
printf("将第一个和第二个合并后的第三个顺序表为:");
MergeList(&a,&b,&c);
print(&c);
getchar();

}

数据结构学习中,,,,在到MergeList这个函数的时候直接就自己停止运行了,我怎么也找不到错误啊 找了两天也没找到 没办法了 请各位找找呗  



------解决方案--------------------
C/C++ code
Status GetEmel(Sqllist *L,int j ,EmleType *e) //这个函数写成这样才能把e的值传出去
//这样调用GetEmel(La,i,&ai);
{
    int i;
    for (i = 0;i<L->length;i++)
    {
        if(i==j) *e=L->emle[i];
        return *e;  
    }
}