问个程序,在线等

Anorld 2003-10-09 09:09:41
这个程序是按数据大小递增建一个链,并打印出来,测试数据都是对的,
但是总是出现 Null pointer assigment,那位高人指点去掉这个东西,
并麻烦解释原因
程序如下:
#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node *next;
};

void creat(struct node* &head)
{
struct node *p;
struct node *pa,*pb;
int s;
printf("please input numbers end of ctrl^z:\n");
while(scanf("%d",&s)!=EOF)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=s;
pa=head->next;
pb=head;
while(pa!=NULL)
if(pa->data<s) { pa=pa->next;
pb=pb->next;
}
else break;
p->next=pa;
pb->next=p;
}
}

void printnode(struct node *head)
{ struct node *p;
p=head->next;
while(p!=NULL)
{ printf("%d ",p->data);
p=p->next;
}
}

int main(void)
{ struct node *head;
head->data=-1;
head->next=NULL;
creat(head);
printnode(head);
return 0;
}
...全文
28 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-10-09
  • 打赏
  • 举报
回复
void creat(struct node* head)
函数参数改一下
daizh 2003-10-09
  • 打赏
  • 举报
回复
补充:void creat(struct node* &head)中传递的是引用,而引用的对象必须要被初始化(即不能为空)。所以,如上改动。
daizh 2003-10-09
  • 打赏
  • 举报
回复
解释:主要是head没有初始化,如上改写后,就可以了。
daizh 2003-10-09
  • 打赏
  • 举报
回复
int main(void)
{
struct node *head = (struct node *)malloc(sizeof(struct node));

head->data=-1;
head->next=NULL;

creat(head);
printnode(head);

free(head);
return 0;
}

69,373

社区成员

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

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