#include<stdio.h>
#include<stdlib.h>
//创建结构体
struct school
{
char name[20];
int age;
char gender;
int number;
struct school *next;
};
int count ;
//创建链表
struct school *creat()
{
count=1;
struct school *head=NULL;
struct school *end,*news;
end=news=(struct school*)malloc(sizeof(struct school));
printf("现在请输入第%d位学生的资料\n",count);
printf("请输入学生的学号,没有学生后按0即可:");
scanf("%d",&news->number);
if(news->number==0)
{
goto s;
}
printf("请输入学生的姓名:");
scanf("%s",&news->name);
printf("请输入学生的年龄:");
scanf("%d",&news->age);
printf("请输入学生的性别(M或W):");
scanf("%s",&news->gender);
printf("\n \n");
s: while(news->number!=0)
{
count++;
if(count==1)
{
news->next=head;
head=news;
end=news;
}
else
{
news->next=NULL;
end->next=news;
end=news;
}
news=(struct school*)malloc(sizeof(struct school));
printf("现在请输入第%d位学生的资料\n",count);
printf("请输入学生的学号:");
scanf("%d",&news->number);
if(news->number==0)
{
goto s;
}
printf("请输入学生的姓名:");
scanf("%s",&news->name);
printf("请输入学生的年龄:");
scanf("%d",&news->age);
printf("请输入学生的性别:");
scanf("%s",&news->gender);
printf("\n \n");
}
free(news);
return head;
}
void print(struct school *head)
{
count=1;
struct school *itemp;
itemp=head;
while(itemp==NULL)
{
printf("这是第%d位同学的资料\n",count);
printf("姓名:%s\n",itemp->name);
printf("姓别:%c\n",itemp->gender);
printf("年龄:%d\n",itemp->age);
printf("学号:%d\n",itemp->number);
printf("\n \n \n");
itemp=itemp->next;
}
}
//主函数
int main()
{
printf("-------XX学院学生录入系统-------\n");
printf("请按照要求填写学生姓名,性别,年龄以及学号,\n若输入完成后学号填零即可!\n");
printf("\n \n");
struct school *head;
head=creat();
print(head);
return 0;
}
为什么我的输出是NULL?