1207: 单链表
题目描述
建立一个链表,每个结点包括:学号、姓名、性别、年龄,链表中结点按照年龄大小排序,并编写相关函数实现链表结点的插入、删除和、创建和遍历输出等功能
#define LEN sizeof(struct student)
struct student
{
int id; //编号
char name[12]; //姓名
char sex; //'F':女、'M':男
int age;
struct student *next; //指向下一个节点的指向变量
};
struct student *creat(void);
struct student *insertnode(struct student *head, struct student *per);
struct student *deletenode(struct student *head, int id);
void outputnodes(struct student *head);
int main(void)
{
struct student *head, *p;
char sex;
int age;
int id;
char name[12];
do
{
scanf("%d", &choise);
switch(choise){
case 1:
head = creat();
break;
case 2:
scanf("%d %s %c %d",&id, name, &sex, &age);
p = (struct student*)malloc(LEN);
p->id = id;
strcpy(p->name, name);
p->sex = sex;
p->age = age;
head = insertnode(head,p);
break;
case 3:
scanf("%d", &id);
head = deletenode(head,id);
break;
case 4:
outputnodes(head);
break;
case 0:
break;
}
}while(choise != 0);
return 0;
}
输入格式
输入样例 复制
1
2019211001 zhanglei M 18
0 zhanglei M 18
2
2019211002 lihui F 19
2
2019211003 zhaoqiang M 17
4
3
2019211001
4
0
输出样例 复制
2019211003 zhaoqiang M 17
2019211001 zhanglei M 18
2019211002 lihui F 19
2019211003 zhaoqiang M 17
2019211002 lihui F 19