c语言动态链表的问题 大神帮忙指出下错误吧
#include<stdio.h>#include<malloc.h>
struct stu
{
int num;
float score; /*改成int score;就可以*/
struct stu *next;
};
struct stu *creat(int n);
main()
{
int n;
struct stu *p;
printf("input n:");
scanf("%d",&n);
p=creat(n);
}
struct stu *creat(int n)
{
int i;
struct stu *head,*pf,*pb;
for(i=0;i<n;i++)
{
pb=(struct stu *)malloc(sizeof(struct stu));
printf("input number and score:");
scanf("%d%f",&pb->num,&pb->score);/*%f改成%d,就可以 */
if(i==0)
{
pf=head=pb;
}
else
{
pf->next=pb;
pb->next=NULL;
pf=pb;
}
}
return head;
}
想了一晚上不知道哪里出了问题!
自己顶顶! 你的struct stu *creat(int n)函数,返回值是一个局部变量,把你的头指针传进去赋值吧。
试试看。 我用你这没报错额。 vsa_ppp 发表于 2013-11-12 23:39
我用你这没报错额。
编译连接都没错就是运行后输入num和score 就出错 本帖最后由 思无邪 于 2013-11-13 00:07 编辑
#include<stdio.h>
#include<malloc.h>
struct stu
{
int num;
float score;
struct stu *next;
};
void creat(struct stu *,int n);
void main()
{
int n;
struct stu *p = 0;
printf("input n:");
scanf("%d",&n);
creat(p,n);
}
void creat(struct stu *head,int n)
{
int i;
struct stu *pf,*pb;
for(i=0;i<n;i++)
{
pb=(struct stu *)malloc(sizeof(struct stu));
printf("input number and score:");
scanf("%d,%f",&(pb->num),&(pb->score));/*这里两个数字连在一起,用逗号分开,不然难以区分,还有你的地址取的有问题*/
printf("%d,%f\n",pb->num,pb->score);
getchar();/* 截取掉输入流里的回车,也可以用一个清输入流的函数,具体自己查吧*/
if(i==0)
{
pf=head=pb;
}
else
{
pf->next=pb;
pb->next=NULL;
pf=pb;
}
}
}
页:
[1]