读书人

链表有关问题大神求指点新手刚入门

发布时间: 2013-09-05 16:02:07 作者: rapoo

链表问题,大神求指点,新手刚入门
如果我用二叉树完成了一个学生的信息管理,请问下,如何把全部链表的信息存入文件,下次读取的时候还能读出链表结构,而不是单纯的文本信息,如果我每个节点都用malloc,那只用free(head)能全部释放内存吗???? 链表 二叉树 malloc 管理 内存
[解决办法]
一个投机取巧的方法,就是用MFC的序列化及反列化功能
[解决办法]
调用malloc分配每个节点的内存,肯定需要一一的用free释放了,不可能只释放head就行啊。
[解决办法]
1 链表怎么写进文件的,就对应怎么读出来就好!

2 每次的malloc 都要对应的去free的!不然会有内存泄漏问题
head释放了,程序不会一点点去帮你找下一次节点的释放问题,
必须自己手动一点一点释放!
[解决办法]

引用:
void lin_free(struct student *head)
{
if(NULL != head)
{
lin_free(head->right);
lin_free(head->left);
free(head);
}
}
我这么free的。。。。。不想从最后一个好多分叉。。。。。,求指点


这么free没有问题!
[解决办法]
你的第一个问题叫做序列化,就是把内存里错中复杂的结构变成一个序列,然后就可以存到文件中去了。C语言有一个序列化库叫做TPL,你可以看一下资料,就知道什么意思了。
你的第二个问题,malloc和free跟数据结构没有实质上的联系。free的时候,操作系统只是知道你malloc这个内存块的时候有多少空间,然后它把这个空间放回空闲中去,仅此而已。你的链表或者树结构,是一些逻辑上的关联。只有你才知道它们是怎么关联的,操作系统不知道,所以不可能帮助你来释放。总之,malloc了几次,就要free几次。
[解决办法]
研读数据结构二叉树,与C语言文件IO!
参考代码:严蔚敏 数据结构 C代码实现!

读书人网 >C语言

热点推荐