#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct stulist
{int num;
char name[10];
char sex[5];
int Class;
char major[20];
struct stulist *next;
}*head;
stulist* madelist(struct stulist *p)
{
int i;
char j="y";
struct stulist *p1;
head=p=(struct stulist*)malloc(sizeof(stulist));
for(;j!="n";)
{p1=(struct stulist*)malloc(sizeof(stulist));
printf("请输入学生学号");
scanf("%d",&p1->num);
getchar();
printf("请输入学生姓名");
scanf("%s",p1->name);
getchar();
printf("请输入学生性别Boy/Gril");
scanf("%s",p1->sex);
getchar();
printf("请输入学生班级");
scanf("%d",&p1->Class);
getchar();
printf("请输入学生专业");
scanf("%s",p1->major);
getchar();
p->next=p1;
p=p1;
printf("是否继续录入学生信息 输入y/n(继续/结束)");
getchar(j);
}
p->next=NULL;
return head;
}
void show(struct stulist *p)
{int a,b;
p=p->next;
printf("学号\t姓名\t性别\t班级\t专业\t");
for(;p!=NULL;p=p->next)
printf("%d\t%s\t%s\t%d\t%s\t\n",p->num,p->name,p->sex,p->Class,p->major);
}
void add(struct stulist *p)
{int a,i,n;
struct stulist *newstu,*s;
s=(struct stulist*)malloc(sizeof(stulist));
newstu=(struct stulist*)malloc(sizeof(stulist));
printf("请输入新的学生的信息");
printf("请输入学生学号");
scanf("%d",&newstu->num);
getchar();
printf("请输入学生姓名");
scanf("%s",newstu->name);
getchar();
printf("请输入学生性别Boy/Gril");
scanf("%s",newstu->sex);
getchar();
printf("请输入学生班级");
scanf("%d",&newstu->Class);
getchar();
printf("请输入学生专业");
scanf("%s",newstu->major);
getchar();
printf("请输入想插入的位置");
scanf("%d",&n);
getchar();
for(i=1;i<n;i++)
p=p->next;
s=p->next;
p->next=newstu;
newstu->next=s;}
void delet(struct stulist *p)
{int i,j;
struct stulist *a;
printf("请输入想删除第几个学生的信息");
scanf("%d",&i);
for(j=1;j<i;j++)
p=p->next;
a=p;
p=p->next;
p=p->next;
a->next=p;
}
void deletmajor(struct stulist *p)
{int i,j;
char pro[20]={'\0'};
struct stulist *a,*b;
a=p;
p=p->next;
printf("请输入想删除的专业");
gets(pro);
for(;p!=NULL;p=p->next)
{if(strcmp(pro,p->major)==0)
{b=p->next;
a->next=b;
}
else
a=p;
}
}
void main()
{int i,j,a;
LOOP:
printf("请选择功能\n");
printf("1建立学生链表\n");
printf("2删除学生节点\n");
printf("3增添学生节点\n");
printf("4删除包含专业的所有节点\n");
printf("5展示所有节点\n");
scanf("%d",&a);
getchar();
switch(a)
{case 1:
madelist(head);
goto LOOP;
case 2:
delet(head);
goto LOOP;
case 3:
add(head);
goto LOOP;
case 4:
deletmajor(head);
goto LOOP;
case 5:
show(head);
goto LOOP;
default:
printf("退出程序");
break;
}
}
错误是这样的 为啥说我没有声明啊
#include<stdlib.h>
#include<string.h>
struct stulist
{int num;
char name[10];
char sex[5];
int Class;
char major[20];
struct stulist *next;
}*head;
stulist* madelist(struct stulist *p)
{
int i;
char j="y";
struct stulist *p1;
head=p=(struct stulist*)malloc(sizeof(stulist));
for(;j!="n";)
{p1=(struct stulist*)malloc(sizeof(stulist));
printf("请输入学生学号");
scanf("%d",&p1->num);
getchar();
printf("请输入学生姓名");
scanf("%s",p1->name);
getchar();
printf("请输入学生性别Boy/Gril");
scanf("%s",p1->sex);
getchar();
printf("请输入学生班级");
scanf("%d",&p1->Class);
getchar();
printf("请输入学生专业");
scanf("%s",p1->major);
getchar();
p->next=p1;
p=p1;
printf("是否继续录入学生信息 输入y/n(继续/结束)");
getchar(j);
}
p->next=NULL;
return head;
}
void show(struct stulist *p)
{int a,b;
p=p->next;
printf("学号\t姓名\t性别\t班级\t专业\t");
for(;p!=NULL;p=p->next)
printf("%d\t%s\t%s\t%d\t%s\t\n",p->num,p->name,p->sex,p->Class,p->major);
}
void add(struct stulist *p)
{int a,i,n;
struct stulist *newstu,*s;
s=(struct stulist*)malloc(sizeof(stulist));
newstu=(struct stulist*)malloc(sizeof(stulist));
printf("请输入新的学生的信息");
printf("请输入学生学号");
scanf("%d",&newstu->num);
getchar();
printf("请输入学生姓名");
scanf("%s",newstu->name);
getchar();
printf("请输入学生性别Boy/Gril");
scanf("%s",newstu->sex);
getchar();
printf("请输入学生班级");
scanf("%d",&newstu->Class);
getchar();
printf("请输入学生专业");
scanf("%s",newstu->major);
getchar();
printf("请输入想插入的位置");
scanf("%d",&n);
getchar();
for(i=1;i<n;i++)
p=p->next;
s=p->next;
p->next=newstu;
newstu->next=s;}
void delet(struct stulist *p)
{int i,j;
struct stulist *a;
printf("请输入想删除第几个学生的信息");
scanf("%d",&i);
for(j=1;j<i;j++)
p=p->next;
a=p;
p=p->next;
p=p->next;
a->next=p;
}
void deletmajor(struct stulist *p)
{int i,j;
char pro[20]={'\0'};
struct stulist *a,*b;
a=p;
p=p->next;
printf("请输入想删除的专业");
gets(pro);
for(;p!=NULL;p=p->next)
{if(strcmp(pro,p->major)==0)
{b=p->next;
a->next=b;
}
else
a=p;
}
}
void main()
{int i,j,a;
LOOP:
printf("请选择功能\n");
printf("1建立学生链表\n");
printf("2删除学生节点\n");
printf("3增添学生节点\n");
printf("4删除包含专业的所有节点\n");
printf("5展示所有节点\n");
scanf("%d",&a);
getchar();
switch(a)
{case 1:
madelist(head);
goto LOOP;
case 2:
delet(head);
goto LOOP;
case 3:
add(head);
goto LOOP;
case 4:
deletmajor(head);
goto LOOP;
case 5:
show(head);
goto LOOP;
default:
printf("退出程序");
break;
}
}
错误是这样的 为啥说我没有声明啊