使用链表实现学生管理系统c语言代码
时间: 2024-09-11 09:11:58 浏览: 48
C语言使用链表实现学生信息管理系统
5星 · 资源好评率100%
使用链表实现学生管理系统的C语言代码可以分为以下几个部分:
1. 定义学生结构体
```
struct student {
int id; // 学号
char name[20]; // 姓名
int age; // 年龄
float score; // 成绩
struct student *next; // 指向下一个学生节点的指针
};
```
2. 定义链表操作函数
```
// 创建链表
struct student *create_list() {
struct student *head, *p, *q;
int n, i;
printf("请输入学生个数:");
scanf("%d", &n);
head = (struct student *)malloc(sizeof(struct student));
head->next = NULL;
q = head;
for (i = 1; i <= n; i++) {
p = (struct student *)malloc(sizeof(struct student));
printf("请输入第%d个学生的信息:\n", i);
printf("学号:");
scanf("%d", &p->id);
printf("姓名:");
scanf("%s", p->name);
printf("年龄:");
scanf("%d", &p->age);
printf("成绩:");
scanf("%f", &p->score);
p->next = NULL;
q->next = p;
q = p;
}
return head;
}
// 输出链表
void print_list(struct student *head) {
struct student *p;
p = head->next;
while (p != NULL) {
printf("%d\t%s\t%d\t%.2f\n", p->id, p->name, p->age, p->score);
p = p->next;
}
}
// 插入节点
void insert_node(struct student *head) {
struct student *p, *q;
int id;
p = head;
printf("请输入要插入的学生的学号:");
scanf("%d", &id);
while (p != NULL && p->id != id) {
p = p->next;
}
if (p == NULL) {
printf("没有找到要插入的位置!\n");
return;
}
q = (struct student *)malloc(sizeof(struct student));
printf("请输入要插入的学生的信息:\n");
printf("学号:");
scanf("%d", &q->id);
printf("姓名:");
scanf("%s", q->name);
printf("年龄:");
scanf("%d", &q->age);
printf("成绩:");
scanf("%f", &q->score);
q->next = p->next;
p->next = q;
}
// 删除节点
void delete_node(struct student *head) {
struct student *p, *q;
int id;
p = head;
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
while (p->next != NULL && p->next->id != id) {
p = p->next;
}
if (p->next == NULL) {
printf("没有找到要删除的节点!\n");
return;
}
q = p->next;
p->next = q->next;
free(q);
}
```
3. 主函数中调用链表操作函数实现学生管理系统
```
int main() {
struct student *head;
int choice;
// 创建链表
head = create_list();
// 菜单循环
while (1) {
printf("\n----- 学生管理系统 -----\n");
printf("1. 输出学生信息\n");
printf("2. 插入学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 退出程序\n");
printf("----------\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch(choice) {
case 1:
print_list(head);
break;
case 2:
insert_node(head);
break;
case 3:
delete_node(head);
break;
case 4:
exit(0);
default:
printf("输入错误,请重新输入!\n");
break;
}
}
return 0;
}
```
阅读全文