C语言单链表实现学生管理系统
简介
单链表是一种线性结构,由多个节点组成。每个节点包含两个域,一个是数据域,用于存储数据,另一个是指针域,用于指向下一个节点。
学生管理系统是一个常见的应用程序,可以用于记录和管理学生信息。C语言单链表可以用来实现学生管理系统,通过链表数据结构的操作,实现学生信息的增删改查等功能。
程序框架
- 定义学生结构体
typedef struct student
{
int id; // 学生编号
char name[20]; // 学生姓名
int score; // 学生成绩
struct student *next; // 指向下一个学生的指针
} Student;
- 实现创建新节点的函数
Student *createNewStudent(int id, char *name, int score)
{
Student *newStudent = (Student*) malloc(sizeof(Student));
newStudent->id = id;
strcpy(newStudent->name, name);
newStudent->score = score;
newStudent->next = NULL;
return newStudent;
}
- 实现添加学生的函数
void addStudent(Student **head, Student *newStudent)
{
if(*head == NULL) {
*head = newStudent;
}
else {
Student *p = *head;
while(p->next != NULL) {
p = p->next;
}
p->next = newStudent;
}
}
- 实现删除学生的函数
void deleteStudent(Student **head, int id)
{
if(*head == NULL) {
printf("链表为空!\n");
}
else {
Student *p = *head;
Student *q = NULL;
while(p != NULL && p->id != id) {
q = p;
p = p->next;
}
if(p == NULL) {
printf("未找到该学生\n");
return;
}
if(q == NULL) {
*head = p->next;
}
else {
q->next = p->next;
}
free(p);
}
}
- 实现修改学生信息的函数
void changeStudent(Student *head, int id, char *name, int score)
{
if(head == NULL) {
printf("链表为空!\n");
}
else {
Student *p = head;
while(p != NULL && p->id != id) {
p = p->next;
}
if(p == NULL) {
printf("未找到该学生!\n");
return;
}
strcpy(p->name, name);
p->score = score;
printf("修改成功!\n");
}
}
- 实现查找学生的函数
void findStudent(Student *head, int id)
{
if(head == NULL) {
printf("链表为空!\n");
}
else {
Student *p = head;
while(p != NULL && p->id != id) {
p = p->next;
}
if(p == NULL) {
printf("未找到该学生!\n");
return;
}
printf("学生姓名:%s 学生成绩:%d\n", p->name, p->score);
}
}
- 实现显示所有学生信息的函数
void displayAllStudent(Student *head)
{
if(head == NULL) {
printf("链表为空!\n");
}
else {
Student *p = head;
printf("所有学生信息如下:\n");
while(p != NULL) {
printf("学生编号:%d 学生姓名:%s 学生成绩:%d\n", p->id, p->name, p->score);
p = p->next;
}
}
}
示例说明
示例1:添加学生信息
int main()
{
Student *head = NULL;
Student *s1 = createNewStudent(1, "张三", 89);
Student *s2 = createNewStudent(2, "李四", 92);
addStudent(&head, s1);
addStudent(&head, s2);
displayAllStudent(head);
return 0;
}
输出结果:
所有学生信息如下:
学生编号:1 学生姓名:张三 学生成绩:89
学生编号:2 学生姓名:李四 学生成绩:92
示例2:删除学生信息
int main()
{
Student *head = NULL;
Student *s1 = createNewStudent(1, "张三", 89);
Student *s2 = createNewStudent(2, "李四", 92);
addStudent(&head, s1);
addStudent(&head, s2);
deleteStudent(&head, 2);
displayAllStudent(head);
return 0;
}
输出结果:
所有学生信息如下:
学生编号:1 学生姓名:张三 学生成绩:89
以上就是C语言单链表实现学生管理系统的完整攻略。通过以上代码的实现,可以实现常见的学生信息管理功能,也可以自由扩展,增加其他功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言单链表实现学生管理系统 - Python技术站