C语言实现链表计算学生平均分

需积分: 1 0 下载量 9 浏览量 更新于2024-08-03 收藏 927B TXT 举报
这段C语言源代码主要实现了计算一个包含N个学生的成绩单链表的平均分功能。整个程序由四个关键部分组成:结构定义、链表操作函数、创建链表函数和主函数。 1. **结构定义**: - 定义了一个名为`slist`的结构体(`struct slist`),它有两个成员:`double score`表示每个学生的分数,以及指向下一个元素的指针`next`。结构体`slist`类型通过`typedef`重命名为`STREC`,以便于后续的引用。 2. **函数`fun()`**: - 这是计算平均分的核心函数,接受一个指向链表头结点的指针`h`作为参数。 - 首先初始化一个变量`sum`为0,然后遍历链表,将每个节点的分数累加到`sum`中。 - 当遍历结束后,通过除以节点总数`N`得到平均分,并返回结果。 3. **函数`creat()`**: - 创建一个带头结点的单链表。函数接受一个包含N个学生成绩的数组`s`作为输入。 - 使用循环来动态分配内存,创建链表节点并将学生成绩依次存入链表中,同时维护指针的链接关系。最后将最后一个节点的`next`设为`0`,表示链表结束。 4. **函数`outlist()`**: - 用于输出链表中的所有学生分数,从头结点开始,逐个打印每个节点的分数,直到链表末尾。 5. **主函数`main()`**: - 初始化一个包含N个学生成绩的数组`s`,调用`creat()`函数创建链表,并将其头结点赋值给`h`。 - 调用`outlist()`函数输出链表,然后调用`fun()`函数计算平均分,并将结果存储在变量`ave`中。 - 最后,输出平均分`ave`,保留三位小数。 总结来说,这段C代码通过链表数据结构实现了一个简单的学生成绩管理功能,能够计算并显示这些学生的平均成绩。通过这个例子,学习者可以了解如何在C语言中使用结构体、链表操作和函数来处理数据。