C语言:构建学生绩点链表,删除低绩点学生并输出新链表
以下是为您编写的 C 语言代码: ```c #include<stdio.h> #include<stdbool.h> #include<stdlib.h> #include<string.h> // 学生结点定义 typedef struct student { char name[20];//姓名 char no[20];//学号 float grade;//绩点 struct student *next; } stu; // 头结点定义 typedef struct { int n; //学生个数 float sum;//学生绩点和 float avg;//平均绩点 stu *first; } he; // 计算平均绩点的函数 float calculateAverageGrade(stu *head) { float sum = 0; int count = 0; stu *current = head; while (current!= NULL) { sum += current->grade; count++; current = current->next; } return sum / count; } // 删除绩点小于平均绩点的学生结点的函数 void deleteStudentsBelowAverage(he *header) { stu *prev = NULL; stu *current = header->first; float average = calculateAverageGrade(header->first); while (current!= NULL) { if (current->grade < average) { if (prev == NULL) { header->first = current->next; } else { prev->next = current->next; } stu *temp = current; current = current->next; free(temp); } else { prev = current; current = current->next; } } } // 输出链表的函数 void printList(he *header) { stu *current = header->first; while (current!= NULL) { printf("姓名: %s, 学号: %s, 绩点: %.2f\n", current->name, current->no, current->grade); current = current->next; } } int main() { he header; header.n = 0; header.sum = 0; header.first = NULL; // 输入学生信息并构建链表 // 调用删除函数和输出函数 deleteStudentsBelowAverage(&header); printList(&header); return 0; } ``` 额外需要注意的逻辑点: 1. 在删除结点时,要正确处理头结点和中间结点的情况。 2. 计算平均绩点时,要确保遍历完所有有效结点。 3. 释放删除结点的内存,防止内存泄漏。 ######[AI写代码神器 | 604点数解答 | 2024-12-03 11:10:47]
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)259
- Java 实现仿 Windows 资源管理器:文件管理器功能全解析与代码示例(字节豆包 | 623点数解答 | 2025-01-01 14:59:04)246
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)468
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)472
- R语言实战:用配对样本t检验评估课程强化集训对学生成绩的提升效果(GPT | 630点数解答 | 2024-11-26 22:00:01)320
- C++实现最短编辑距离计算:将一个单词转换为另一个的最少操作数揭秘(字节豆包 | 311点数解答 | 2025-11-12 14:55:49)51
- Linux 系统用户、组及文件操作全流程实践(字节豆包 | 1142点数解答 | 2026-03-20 17:29:38)5
- 苍溪县:版权赋能驱动县域高质量振兴发展(字节豆包 | 742点数解答 | 2026-03-12 16:34:22)20
- C 语言实现单链表全功能操作:创建、增删查改与逆置测试( | 4796点数解答 | 2024-03-28 16:24:20)339
- SQL中无法直接用DELETE JOIN删除?用子查询和临时表来搞定!(阿里通义 | 337点数解答 | 2024-07-29 16:12:01)228
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)280
- C++实现单循环链表:初始化、插入、删除等操作及测试验证(GPT | 2102点数解答 | 2024-10-13 13:39:58)154