链表尾插法出现问题

honbaa 2011-08-04 03:08:36
void CreateList_L2(LinkList *L){
int i,n;
LinkList p,q;
q=*L;
*L=(LinkList)malloc(sizeof(LNode));
(*L)->next=NULL;
printf("输入元素的个数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
printf("输入第%d个元素的值:\n",i);
scanf("%d",&p->data);
p->next=NULL;
q->next=p;
q=p;
}

}
程序执行到红体字时,出现对话框,要求终止程序,就是输入一个数字,回车后要求停止,不能继续输入了。。。
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
honbaa 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hua_yang 的回复:]

void CreateList_L2(LinkList *L){
int i,n;
LNode* p = NULL;
LNode* q = NULL;

*L = (LNode*)malloc(sizeof(LNode));
if(NULL == (*L))
{
return;
}
(*L)->next=NULL;
q = *L;

printf("输入元素的个……
[/Quote]
q=*L这句应该在头结点建立后在写,而不是应该在最开始,否则q并不具有头指针的特点,还有,我发现你在分配空间的时候都检验一下,学习了,谢谢了
hua_yang 2011-08-04
  • 打赏
  • 举报
回复
void CreateList_L2(LinkList *L){
int i,n;
LNode* p = NULL;
LNode* q = NULL;

*L = (LNode*)malloc(sizeof(LNode));
if(NULL == (*L))
{
return;
}
(*L)->next=NULL;
q = *L;

printf("输入元素的个数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(LNode*)malloc(sizeof(LNode));
if(NULL == p)
{
return;
}
printf("输入第%d个元素的值:\n",i);
scanf("%d",&(p->data));
p->next=NULL;
q->next=p;
q=p;
}

}
honbaa 2011-08-04
  • 打赏
  • 举报
回复
L是节点的指针的指针类型,也就是我要用地址传递,修改实参。实参是一个头指针。
代码兔2014 2011-08-04
  • 打赏
  • 举报
回复
前面部分可能也有问题,参照修改
代码兔2014 2011-08-04
  • 打赏
  • 举报
回复
p=(LinkList)malloc(sizeof(LNode));
改为p=(LNode *)malloc(sizeof(LNode));

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧