链表的建立

来源:百度知道 编辑:UC知道 时间:2024/05/17 11:48:03
#include "stdio.h"
#include "stdlib.h"
#define NULL 0
#define HL struct stu
struct stu
{
char nuam[20];
char sex[5];//性别
int age;
int sore;//成绩
HL *next;
};
main()
{
HL *pa,*pb,*tou;
int i;
pb=pa=tou=NULL;
pa=(HL*)malloc(sizeof(HL));
for(i=1;i<11;i++)
{
pb=pa;
if(i==1)
pa=tou;
printf("输入:\n");
printf("姓名 性别 年龄 成绩\n");
scanf("%s %s %d %d",&(pa->nuam),&(pa->sex),&(pa->age),&(pa->sore));
pa=(HL*)malloc(sizeof(HL));
pb->next=pa;
pa->next=NULL;
}
}

运行后 输入第一组信息 就会提示错误退出
那错了 怎么改
二楼的运行到第三个结点就卡住了...怎么改 还是我编译器有问题?

if(i==1)
pa=tou; /////////////////////////错这
printf("输入:\n");
printf("姓名 性别 年龄 成绩\n");
scanf("%s %s %d %d",&(pa->nuam),&(pa->sex),&(pa->age),&(pa->sore));

因为开始1==1时pa=tou;tou是指向空NULL的,那么pa也是指向空NULL
而你给NULL的地址输入值就出错了,应该是tou=pa;

#include "stdio.h"
#include "stdlib.h"
#define NULL 0
#define HL struct stu
struct stu
{
char nuam[20];
char sex[5];//性别
int age;
int sore;//成绩
HL *next;
};
main()
{
HL *pa,*pb,*tou;
int i;
pb=pa=tou=NULL;
pa=(HL*)malloc(sizeof(HL));
for(i=1;i<11;i++)
{
pb=pa;
if(i==1)
tou=pa;
printf("输入:\n");
printf("姓名 性别 年龄 成绩\n");
scanf("%s %s %d %d",&(pa->nuam),&(pa->sex),&(pa->age),&(pa->sore));
pa=(HL*)malloc(sizeof(HL));
pb->next=pa;
pa->next=NULL;
}