以下是一个简单的C语言程序,用于管理学生信息链表: ```c #include #include #include // 定义学生结构体 typedef struct Student { int id; char sex; int age; char class[30]; struct Student *next; } Student; // 函数声明 Student* createStudent(); void insertStudent(Student **head, Student *newStudent); void deleteStudent(Student **head, int id); void modifyStudent(Student **head, int id); void findStudent(Student *head, int id); void displayStudents(Student *head); void freeStudents(Student *head); int main() { int choice, numStudents, id; Student *head = NULL; printf("学生信息管理程序\n"); while (1) { printf("\n请选择操作:\n"); printf("1. 初始化\n"); printf("2. 插入学生\n"); printf("3. 删除学生\n"); printf("4. 修改学生信息\n"); printf("5. 查找学生信息\n"); printf("6. 显示所有学生信息\n"); printf("7. 退出\n"); printf("输入选择:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入班级学生人数:"); scanf("%d", &numStudents); for (int i = 0; i < numStudents; i++) { Student *newStudent = createStudent(); insertStudent(&head, newStudent); } break; case 2: { Student *newStudent = createStudent(); insertStudent(&head, newStudent); } break; case 3: printf("请输入要删除学生的学号:"); scanf("%d", &id); deleteStudent(&head, id); break; case 4: printf("请输入要修改信息学生的学号:"); scanf("%d", &id); modifyStudent(&head, id); break; case 5: printf("请输入要查找学生的学号:"); scanf("%d", &id); findStudent(head, id); break; case 6: displayStudents(head); break; case 7: freeStudents(head); printf("程序退出\n"); return 0; default: printf("无效的选择\n"); break; } } return 0; } // 创建新学生并返回 Student* createStudent() { Student *newStudent = (Student*)malloc(sizeof(Student)); if (!newStudent) { printf("内存分配失败\n"); exit(EXIT_FAILURE); } printf("请输入学生学号:"); scanf("%d", &newStudent->id); printf("请输入学生性别(M/F):"); scanf(" %c", &newStudent->sex); printf("请输入学生年龄:"); scanf("%d", &newStudent->age); printf("请输入学生班级:"); scanf("%s", newStudent->class); newStudent->next = NULL; return newStudent; } // 向链表插入新学生 void insertStudent(Student **head, Student *newStudent) { newStudent->next = *head; *head = newStudent; } // 按学号删除学生 void deleteStudent(Student **head, int id) { Student *prev = NULL, *current = *head; while (current != NULL && current->id != id) { prev = current; current = current->next; } if (current != NULL) { if (prev == NULL) { *head = current->next; } else { prev->next = current->next; } free(current); printf("学生删除成功\n"); } else { printf("未找到指定学号的学生\n"); } } // 按学号修改学生信息 void modifyStudent(Student **head, int id)

点赞(0)
×
关注公众号,登录后继续创作
或点击进入高级版AI
扫码关注后未收到验证码,回复【登录】二字获取验证码
发表
评论
返回
顶部