c语言链表学生信息管理系统
时间: 2023-08-23 12:08:13 浏览: 125
好的,我了解你的要求。关于学生信息管理系统,我们可以使用 C 语言的链表来实现。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 定义学生结构体 */
typedef struct student {
int id; // 学生编号
char name[20]; // 学生姓名
int age; // 学生年龄
char sex; // 学生性别(男/女)
struct student *next; // 指向下一个节点的指针
} Student;
/* 初始化链表 */
Student *init() {
Student *head = (Student *)malloc(sizeof(Student));
head->next = NULL;
return head;
}
/* 添加学生信息 */
void add(Student *head, int id, char *name, int age, char sex) {
Student *p = (Student *)malloc(sizeof(Student));
p->id = id;
strcpy(p->name, name);
p->age = age;
p->sex = sex;
p->next = NULL;
Student *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = p;
}
/* 删除学生信息 */
void del(Student *head, int id) {
Student *p = head;
while (p->next != NULL && p->next->id != id) {
p = p->next;
}
if (p->next == NULL) {
printf("不存在该学生信息!");
} else {
Student *temp = p->next;
p->next = temp->next;
free(temp);
printf("删除成功!");
}
}
/* 查询学生信息 */
void search(Student *head, int id) {
Student *p = head->next;
while (p != NULL && p->id != id) {
p = p->next;
}
if (p == NULL) {
printf("不存在该学生信息!");
} else {
printf("学生信息如下:\n");
printf("编号:%d\n姓名:%s\n年龄:%d\n性别:%c\n", p->id, p->name, p->age, p->sex);
}
}
/* 输出全部学生信息 */
void show(Student *head) {
Student *p = head->next;
if (p == NULL) {
printf("没有学生信息!");
} else {
printf("===================\n");
while (p != NULL) {
printf("编号:%d\n姓名:%s\n年龄:%d\n性别:%c\n", p->id, p->name, p->age, p->sex);
printf("===================\n");
p = p->next;
}
}
}
/* 释放链表空间 */
void clear(Student *head) {
Student *p = head->next;
while (p != NULL) {
Student *temp = p;
p = p->next;
free(temp);
}
head->next = NULL;
}
/* 主函数 */
int main() {
Student *head = init();
int choice, id, age;
char name[20], sex;
while (1) {
printf("请选择功能:\n1. 添加学生信息\n2. 删除学生信息\n3. 查询学生信息\n4. 查看所有学生信息\n5. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学生信息(编号、姓名、年龄、性别):");
scanf("%d %s %d %c", &id, name, &age, &sex);
add(head, id, name, age, sex);
printf("添加成功!\n");
break;
case 2:
printf("请输入要删除的学生编号:");
scanf("%d", &id);
del(head, id);
printf("\n");
break;
case 3:
printf("请输入要查询的学生编号:");
scanf("%d", &id);
search(head, id);
printf("\n");
break;
case 4:
show(head);
printf("\n");
break;
case 5:
clear(head);
printf("程序已退出!\n");
return 0;
default:
printf("输入有误,请重新输入。\n");
break;
}
}
return 0;
}
```
以上代码是一个基于链表的学生信息管理系统的简单实现,包括添加、删除、查询、查看所有学生信息、退出等基本功能。希望能对你有帮助。
阅读全文