• 全部
  • 问答

用c创建链表时出错了:(

asvaboy1980 2002-10-16 11:01:43
程序源代码是:
#include"stdio.h"
#include<alloc.h>
typedef struct node{
int data;
struct node *next;
} Listnode;
typedef Listnode *Linklist;
Linklist creatlist(head)
Linklist head;
{ int a;
Listnode *s;
head=NULL;
printf("Input s->data:\n");
while(1)
{ scanf("%d",&a);
if(a==0) break;
s=(Listnode*)malloc(sizeof(Listnode));
s->data=a;
s->next=head;
head=s;
}
return head;
}
main()
{ Linklist p;
Linklist creatlist(p);
while(p!=NULL)
{ prinf("%d",p->data);
p=p->next;
}
}

在Tc下编译时,说有一个错误在26行,求救:(
...全文
16 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hello_wyq 2002-10-17
linklist是指针,你又传给它的是值,而不是地址,做了半天p值还是没有改变啊。因此要么船引用,要么传指针的地址.

回复
real_chang 2002-10-16
你既然已经定义了
Linklist p = NULL;
那么到
Linklist creatlist(p);
时调用Linklist creatlist(head)
Linklist head;
因为名称相同,即P被定义了两次,当然会出错
回复
zxm954712 2002-10-16
通上
回复
zjw2723114 2002-10-16
当然错啦
应该为creatlist(p);
去掉Linklist
回复
双杯献酒 2002-10-16
加上
#include <malloc.h>
看看
回复
blue_coco 2002-10-16
每次将新加节点放在最前面。

Linklist creatlist(head)
Linklist head;
{
int a;
Listnode *s;

printf("Input s->data:\n");
while(1)
{
scanf("%d",&a);
if(a==0) break;
s=(Listnode*)malloc(sizeof(Listnode));
if (NULL == s) break;
s->data = a;
if (NULL == head)
{
s->next = NULL;
}
else
{
s->next = head;
}
head = s

}
return head;
}

main()
{
Linklist p = NULL;

Linklist creatlist(p);
while(p!=NULL)
{ prinf("%d",p->data);
p=p->next;
}
}
回复
Anderes 2002-10-16
你的头文件都是错误的!!!!
回复
zhi_chong 2002-10-16
在main()中是调用creatlist(p)而不是再次定义函数。
因为你已经定义过了
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-10-16 11:01
社区公告
暂无公告