学生信息管理系统c语言单链表
时间: 2023-09-01 09:11:31 浏览: 40
好的,下面是一个简单的学生信息管理系统的单链表实现,使用了结构体来存储学生的信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct student {
char name[20];
int age;
int id;
struct student *next;
} Student;
// 初始化学生链表
Student *init() {
Student *head = (Student *) malloc(sizeof(Student));
head->next = NULL;
return head;
}
// 添加学生
void add(Student *head, Student *student) {
Student *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = student;
student->next = NULL;
}
// 根据学号查找学生
Student *find(Student *head, int id) {
Student *p = head->next;
while (p != NULL) {
if (p->id == id) {
return p;
}
p = p->next;
}
return NULL;
}
// 删除学生
void delete(Student *head, int id) {
Student *p = head;
while (p->next != NULL) {
if (p->next->id == id) {
Student *tmp = p->next;
p->next = tmp->next;
free(tmp);
return;
}
p = p->next;
}
}
// 显示学生信息
void show(Student *head) {
Student *p = head->next;
while (p != NULL) {
printf("学号:%d\t姓名:%s\t年龄:%d\n", p->id, p->name, p->age);
p = p->next;
}
}
int main() {
Student *head = init();
// 添加学生
Student *s1 = (Student *) malloc(sizeof(Student));
strcpy(s1->name, "张三");
s1->age = 18;
s1->id = 1001;
add(head, s1);
Student *s2 = (Student *) malloc(sizeof(Student));
strcpy(s2->name, "李四");
s2->age = 19;
s2->id = 1002;
add(head, s2);
// 显示学生信息
show(head);
// 删除学生
delete(head, 1002);
// 显示学生信息
show(head);
// 查找学生
Student *s = find(head, 1001);
if (s != NULL) {
printf("查找成功:学号:%d\t姓名:%s\t年龄:%d\n", s->id, s->name, s->age);
} else {
printf("查找失败:未找到该学生\n");
}
return 0;
}
```
该程序实现了添加、查找、删除和显示学生信息的功能。你可以根据自己的需求进行修改和完善。