C语言链表实现学生信息管理系统
C语言链表实现学生信息管理系统
本文提供了一个使用链表实现的简单C语言课程设计示例,该示例演示了一个简单的学生信息管理系统,包含添加、删除和显示学生信息的功能。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct Student {
char name[20];
int age;
char gender[10];
struct Student* next;
} Student;
// 创建学生节点
Student* createStudent(char name[], int age, char gender[]) {
Student* student = (Student*)malloc(sizeof(Student));
strcpy(student->name, name);
student->age = age;
strcpy(student->gender, gender);
student->next = NULL;
return student;
}
// 添加学生信息
void addStudent(Student** head, char name[], int age, char gender[]) {
Student* student = createStudent(name, age, gender);
if (*head == NULL) {
*head = student;
} else {
Student* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = student;
}
printf('学生信息添加成功!\n');
}
// 删除学生信息
void deleteStudent(Student** head, char name[]) {
if (*head == NULL) {
printf('学生信息为空,无法删除!\n');
return;
}
Student* current = *head;
Student* prev = NULL;
// 删除头节点
if (strcmp(current->name, name) == 0) {
*head = current->next;
free(current);
printf('学生信息删除成功!\n');
return;
}
// 删除中间或尾部节点
while (current != NULL && strcmp(current->name, name) != 0) {
prev = current;
current = current->next;
}
if (current == NULL) {
printf('学生信息不存在,无法删除!\n');
return;
}
prev->next = current->next;
free(current);
printf('学生信息删除成功!\n');
}
// 显示学生信息
void displayStudents(Student* head) {
if (head == NULL) {
printf('学生信息为空!\n');
return;
}
printf('学生信息如下:\n');
Student* current = head;
while (current != NULL) {
printf('姓名:%s\t年龄:%d\t性别:%s\n', current->name, current->age, current->gender);
current = current->next;
}
}
// 释放链表内存
void freeList(Student* head) {
Student* current = head;
while (current != NULL) {
Student* temp = current;
current = current->next;
free(temp);
}
}
int main() {
Student* head = NULL; // 学生链表头指针
int choice;
char name[20], gender[10];
int age;
while (1) {
printf('\n学生信息管理系统\n');
printf('1. 添加学生信息\n');
printf('2. 删除学生信息\n');
printf('3. 显示学生信息\n');
printf('4. 退出\n');
printf('请输入你的选择:');
scanf('%d', &choice);
switch (choice) {
case 1:
printf('请输入学生姓名:');
scanf('%s', name);
printf('请输入学生年龄:');
scanf('%d', &age);
printf('请输入学生性别:');
scanf('%s', gender);
addStudent(&head, name, age, gender);
break;
case 2:
printf('请输入要删除的学生姓名:');
scanf('%s', name);
deleteStudent(&head, name);
break;
case 3:
displayStudents(head);
break;
case 4:
freeList(head);
exit(0);
default:
printf('无效的选择!\n');
}
}
return 0;
}
这个示例实现了一个简单的学生信息管理系统,通过菜单选择可以添加学生信息、删除学生信息和显示学生信息。学生信息通过链表存储,每个节点包含学生的姓名、年龄和性别。
原文地址: https://www.cveoy.top/t/topic/rAS 著作权归作者所有。请勿转载和采集!