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);
}
不对呀,怎么能那样改,能不能再改改呀,谢谢
追答你把scanf里面的p->next前面的&去掉试试
追问可以编译,但是还是不能运行,我觉得这个程序有逻辑上的错误,你能不能给我改一下呢?主函数里面也没有链表Lc的输出,你给我改一下吧!谢谢啦:D
追答今天可能不行,明天给你看一下吧
追问嗯嗯,好的,谢谢你└(^o^)┘
运行没有错误,出来的黑框上只有“按任意键执行”,编译着也没有错误,我感觉是逻辑上的错误,应该得改一下,非常感谢