C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢 #in 30
C语言数据结构线性表单链表的基本操作,写好了代码,编译没有错但运行有错,求找错误在哪?谢谢#include<stdio.h>#include<stdlib.h>#defi...
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);
} 展开
#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);
} 展开
3个回答
展开全部
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对应的汇编并单步执行观察相应内存和寄存器变化。)
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
展开全部
&改为&&试试
更多追问追答
追问
不对呀,怎么能那样改,能不能再改改呀,谢谢
追答
你把scanf里面的p->next前面的&去掉试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把运行错误。粘贴过来看看
追问
运行没有错误,出来的黑框上只有“按任意键执行”,编译着也没有错误,我感觉是逻辑上的错误,应该得改一下,非常感谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询