求助 程序中止 无法执行
这是一个求两个有序链表合并为第三个有序链表的主程序部分,我把合并程序放在主程序中。每次执行程序到合并程序时,就无法向下进行,如去掉它,则可以顺利执行到最后。请问这是什么原因引起的?void main(){
data La(100);
data Lb(100);
data Lc(100);
La.listcreate();//按从小到大的顺序输入La的值
Lb.listcreate();//按从小到大的顺序输入Lb的值
//------------------------------
//La与Lb按照顺序合并成Lc
int i=0;
int j=0;
int k=0;
while((i<=La.length )&&(j<=Lb.length)){
if (Lc.length>=Lc.listsize)
{
Lc.elem=(int *)realloc(Lc.elem,(Lc.listsize+LISTINCREMENT)*LEN);
if(! Lc.elem)
cout<<"OVERFLOW"<<endl;
Lc.listsize+=LISTINCREMENT;
}
if(La.elem[i]<=Lb.elem[j]){
Lc.elem[k]=La.elem[i];
++k;
++i;
Lc.length=k;
}
else {
Lc.elem[k]=Lb.elem[j];
++k;
++j;
Lc.length=k;
}
}
while (i<La.length){
if (Lc.length>=Lc.listsize)
{
Lc.elem=(int *)realloc(Lc.elem,(Lc.listsize+LISTINCREMENT)*LEN);
if(! Lc.elem)
cout<<"OVERFLOW"<<endl;
Lc.listsize+=LISTINCREMENT;
}
Lc.elem[k]=La.elem[i];
i++;
++k;
Lc.length=k;
}
while(j<=Lb.length){
if (Lc.length>=Lc.listsize)
{
Lc.elem=(int *)realloc(Lc.elem,(Lc.listsize+LISTINCREMENT)*LEN);
if(! Lc.elem)
cout<<"OVERFLOW"<<endl;
Lc.listsize+=LISTINCREMENT;
}
Lc.elem[k]=Lb.elem[j];
i++;
++k;
Lc.length=k;
}
//--------------------------
Lc.output();//显示合并后Lc的结果