用c语言使用链表写一个学生成绩管理系统
时间: 2023-09-04 10:07:23 浏览: 114
C语言使用链表实现学生信息管理系统
5星 · 资源好评率100%
以下是一个简单的 C 语言实现的学生成绩管理系统,使用链表来存储学生信息和成绩:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生信息结构体
typedef struct Student {
char name[20]; // 姓名
int age; // 年龄
int score; // 成绩
struct Student* next; // 指向下一个学生的指针
} Student;
// 函数声明
Student* createStudent(char* name, int age, int score);
Student* addStudent(Student* head, Student* newStudent);
void printStudents(Student* head);
void freeStudents(Student* head);
int main(void) {
Student* head = NULL; // 学生链表头指针
// 添加学生
head = addStudent(head, createStudent("Tom", 18, 90));
head = addStudent(head, createStudent("Jerry", 19, 85));
head = addStudent(head, createStudent("Alice", 20, 95));
// 打印学生信息
printStudents(head);
// 释放链表内存
freeStudents(head);
return 0;
}
// 创建一个新的学生信息结构体
Student* createStudent(char* name, int age, int score) {
Student* newStudent = (Student*)malloc(sizeof(Student));
strcpy(newStudent->name, name);
newStudent->age = age;
newStudent->score = score;
newStudent->next = NULL;
return newStudent;
}
// 添加一个学生信息到链表中
Student* addStudent(Student* head, Student* newStudent) {
if (head == NULL) {
head = newStudent;
} else {
Student* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newStudent;
}
return head;
}
// 打印链表中的学生信息
void printStudents(Student* head) {
printf("姓名\t年龄\t成绩\n");
printf("=======================\n");
Student* p = head;
while (p != NULL) {
printf("%s\t%d\t%d\n", p->name, p->age, p->score);
p = p->next;
}
}
// 释放链表内存
void freeStudents(Student* head) {
Student* p = head;
while (p != NULL) {
Student* q = p;
p = p->next;
free(q);
}
}
```
这个程序中,我们定义了一个 `Student` 结构体,包含了学生的姓名、年龄、成绩和指向下一个学生的指针。我们使用 `createStudent` 函数来创建一个新的学生信息结构体,使用 `addStudent` 函数将新的学生信息加入到链表中。使用 `printStudents` 函数来打印链表中的学生信息,使用 `freeStudents` 函数来释放链表内存。在 `main` 函数中,我们先创建几个学生信息结构体,然后加入到链表中,最后打印学生信息并释放链表内存。
阅读全文