请教一个链表的问题
原本的思路是要按输入的学生的数量建立动态链表,然后打印出来但是 问题老报错
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char name[100];
int number;
struct student *next;
};
struct student *h,*p1,*p2;
struct student * Creat(int n) \创建链表,根据输入的学生数量创建
{ int i=1;
int temp=n;
char p3[100];
int num;
h=p1=p2=NULL;
for(;n>=0;n--) \\输入的次数循环
{
if (h==NULL) \\如果头指针是空的话,就创建一个空间,并使得p1=h
{
p1=(struct student *)malloc(sizeof(struct student));
h=p1;
}
if (h!=NULL && n>0) \\如果头指针不为空,则继续
{
printf("请输入学生%d的名字:",i);
scanf("%s",p3);
strcpy(p1->name,p3);
printf("请输入学生%d的成绩:",i);
scanf("%d",&num);
p1->number=num;
p1=(struct student *)malloc(sizeof(struct student));
p2->next=p1;
p2=p1;
i++;
}
else
p2->next=NULL;
}
return h;
}
void print(struct student * h) \\ 打印的函数
{
struct student *p=h;
do
{
printf("姓名:%s,成绩:%d\n",p->name,p->number);
p=p->next;
}
while(p!=NULL);
}
int main()
{
int n;
struct student * h;
printf("输入学生总人数:\n");
scanf("%d",&n);
h=Creat(n);
print(h);
return 0;
}
希望能解答 谢谢各位了啊
[ 本帖最后由 jbddd 于 2009-12-23 12:53 编辑 ]