C语言,成绩管理系统,链表和文件的问题

不知道用链表写到底有什么优点?链表是动态内存分配,节约内存空间。但是学生记录(一个结构体变量)应该是一条一条写进文件、从文件中读取出来的吧?如果用数组或者链表,万一学生很... 不知道用链表写到底有什么优点?链表是动态内存分配,节约内存空间。但是学生记录(一个结构体变量)应该是一条一条写进文件、从文件中读取出来的吧?如果用数组或者链表,万一学生很多,内存开销会很大呀。
还有排序的话(比如按学号或者成绩),是不是要先把所学生的记录从文件读取到内存,在排序?
有些糊涂,希望大家解释一下,谢谢~
展开
 我来答
凯旋冲锋
2012-06-23 · TA获得超过715个赞
知道小有建树答主
回答量:501
采纳率:100%
帮助的人:474万
展开全部
假设学生数未知,但不超过10000。
如果用普通数组,那么你不得不在程序一开始就声明一个长度为10000的数组,就算最终录入的学生只有5个人,但是还是会占用10000个单位的空间。
而用链表,程序一开始甚至一个空间都不需要,当要输入一个学生时,才现声明一个单位空间。如果最终只录入了7人,那么就只占了7个单位空间。
动态内存所说的节约空间,只是相对于固定分配的普通数组而言。
而你说的文件与内存的问题,跟链表无直接关系。不管你用什么数据结构,当数据太多,超过内存容量的时候,肯定都是不能同时全部读入内存的,都必须把当前不需要的部分暂存在硬盘上,等内存把当前数据处理完,写回文件,再把其他部分读入内存操作。
任何数据,都可以有两种存在状态:内存中和硬盘上。所以一个结构体可以全部存在于内存中,也可以在硬盘上。只要内存容量足够,无论多少结构体都可以存在于内存中。而在C语言里,大多数情况下,“结构体”都是在内存中的,因为当“结构体”写回硬盘后,一般都不在称之为“结构体”,而是一堆数据。
C语言的所有数据结构都是指活跃在内存中的数据的结构,因为某个特定结构的数据都是可以直接操作的,这只有放在内存中才能实现。
排序的问题,一般来讲,确实是所有学生都要读入内存才能进行排序。
记住一点,任何数据的操作都是在内存中进行的。
来自吴兴寺心花怒放的芙蓉玉
2012-06-23 · TA获得超过105个赞
知道小有建树答主
回答量:261
采纳率:100%
帮助的人:133万
展开全部
数组很浪费内存
但是结构体链表可以动态分配内存
用malloc函数 开辟新单元
至于排序 应该锁定一个关键词 用什么区排序 然后对结构体成员进行操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式