帮忙看看下列源代码:分配不了自定义结构的
#include #include
#include
#define ERROR 0
#define OK 1
typedef struct ChongXiu{
int term;
int score;
}ChongXiu;
typedef struct Subject{
}Subject;
typedef struct student{
long num; //学号
char *name; //姓名
int sex; //1表示男性,0表示女性
int age; //年龄
int room; //宿舍号码
long tel; //tel1表示宿舍电话,tel2表示手机号码
int subnum; //课程编号
char *subname; //课程名字
int score1,score2,score3; //1:考试成绩;2:平时成绩;3:综合成绩
int xuefeng; //学分
char cx; //y表示重修,n表示没有重修
ChongXiu *elem;
struct student *next;
}Student;
Student Create(Student &L,int n){ //n表示学生个数
Student *p,*q;
int i=1;
int score1,score2,score3; //1:考试成绩;2:平时成绩;3:综合成绩
int xuefeng;
Student *L=(Student *) malloc(sizeof(Student));
if(!L) return (-2);
L->next = NULL; // 先建立一个带头结点的单链表
q=(Student*) malloc(sizeof(Student));
q=L;
while(i<=n){
p=(Student*) malloc(sizeof(Student));
printf("请输入学生的学号:");
scanf("%ld",&(p->num));
printf("请输入学生的姓名:");
scanf("%s",p->name);
printf("请输入学生的性别:(1为男性,0为女性)");
scanf("%d",&(p->sex));
printf("请输入学生的年龄:");
scanf("%d",&(p->age));
printf("请输入学生的宿舍号码:");
scanf("%d",&(p->room));
printf("请输入学生的手机号码:");
scanf("%ld",&(p->tel));
q=Insert(L,p);
i++;
}
return OK;
}
Student Insert(Student L,Student p){
Student *p1,*p2,*p3;
p1=(Student*) malloc(sizeof(Student));
p2=(Student*) malloc(sizeof(Student));
p3=(Student*) malloc(sizeof(Student));
p3=L;
p1=p;
if(L==NULL){
L->next=p1;
p1->next=NULL;}
else{
while((p1->num>p3->num)&&(p3->next!=NULL)){
p2=p3;
p3=p3->next;
}
if(p1->num<=p3->num){
if(L==p3)L=p1;
else p2->next=p1;
p1->next=p3;
}
else{
p3->next=p1;
p1->next=NULL;
}
}
}
return L;
}
int main(){
Student *L,*p;
int n,choice;
do{
printf("1:新建多个学生档案\n2:增添或补充学生档案\n3:删除学生档案\n4:显示全部学生档案");
scanf("%d",&choice);
switch(choice){
case 1:printf("请输入创建的档案数量:");
scanf("%d",&n);
if(Create(L,n)) printf("%d个学生档案成功创建",n);
else printf("创建失败");
break;
case 2: p=(Student*) malloc(sizeof(Student));
printf("请输入学生的学号:");
scanf("%ld",&(p->num));
printf("请输入学生的姓名:");
scanf("%s",p->name);
printf("请输入学生的性别:(1为男性,0为女性)");
scanf("%d",&(p->sex));
printf("请输入学生的年龄:");
scanf("%d",&(p->age));
printf("请输入学生的宿舍号码:");
scanf("%d",&(p->room));
printf("请输入学生的手机号码:");
scanf("%ld",&(p->tel));
L=Insert(L,p);
break;
case 0;printf("退出系统");break;
}
}while(choice!=0);
return 0;
}