C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢 #in

C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
int InitList(LinkList &La){ La=(LinkList)malloc(sizeof(LNode));
if(!InitList(La)) return ERROR;
La->next=NULL;
return OK;
}
int ListInsert_L(LinkList &La,int i,ElemType e){
LNode *p; int j;
LinkList s;
p=La;j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}//ListInsert_L
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
LNode *pa,*pb,*pc;
pa=La->next; pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pb->next;
}
else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
free(Lb);
}
void main()
{
int n=10;
LNode *p;
LinkList La,Lb,Lc;
InitList(La);
for(int i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
printf(" input numbers: \n");
scanf("%d",&p->data);
p->next=La->next;
La->next=p;
}
InitList(Lb);
for(int j=n;j>0;--j)
{
p=(LinkList)malloc(sizeof(LNode));
printf(" input numbers: \n");
scanf("%d",&p->data);
p->next=Lb->next;
Lb->next=p;
}
InitList(Lc);
MergeList_L(La,Lb,Lc);

}

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-23
&改为&&试试追问

不对呀,怎么能那样改,能不能再改改呀,谢谢

追答

你把scanf里面的p->next前面的&去掉试试

追问

可以编译,但是还是不能运行,我觉得这个程序有逻辑上的错误,你能不能给我改一下呢?主函数里面也没有链表Lc的输出,你给我改一下吧!谢谢啦:D

追答

今天可能不行,明天给你看一下吧

追问

嗯嗯,好的,谢谢你└(^o^)┘

第2个回答  2014-10-24
把运行错误。粘贴过来看看追问

运行没有错误,出来的黑框上只有“按任意键执行”,编译着也没有错误,我感觉是逻辑上的错误,应该得改一下,非常感谢

相似回答