免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3384 | 回复: 14
打印 上一主题 下一主题

[C] 请问我选链表还是结构数组? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-02 20:18 |只看该作者 |倒序浏览
最近在练习写一个大概1000-2000行代码左右的家用理财系统
想实现简单的数据结构
包括多层结构的套嵌 按各字段(例如结构 记录时间 索引 收支 项目等条件)查找 生成html报表等一些功能,
要求把文件加密处理后存入一个二进制文件,通过专门的函数来读取调用
要用fread和fwrite来进行块操作,但是还有些疑问.
因为之前都在处理外围功能,数据结构这块有画简单的导图出来,大概是5个结构 20个成员左右,
如果我用链表,那么我用fwrite写入到文件中的数据
再读出来那么链表的完整性如何保证?
不是我太懒,因为处理到最核心的这部分功能感觉有点吃力了,第一次写,我参考了很多代码,但比较多的是用结构数组实现的
我倾向链表,喜欢灵活和好优化,但就是想不通
如果我的数据重新读回了内存,但是地址肯定发生变化了,那结构中的指针还能发挥作用吗?因为链表不象数组那样连续分布
在我读回内存后链表数据分布是否发生了变化?

论坛徽章:
0
2 [报告]
发表于 2009-07-02 20:49 |只看该作者
哎 还是自己先实现一下再请教吧......

论坛徽章:
0
3 [报告]
发表于 2009-07-02 20:53 |只看该作者
还是选链表吧,比较灵活

论坛徽章:
0
4 [报告]
发表于 2009-07-02 21:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2009-07-02 21:34 |只看该作者
楼上的意思是说
存的时候我顺序的把表存到里面然后读出的时候再重建一个链表再把结点逐个重新连起来是吗
那样只是增加一些结点计数的变量就可以了
想想也是 链表只是为了在内存中灵活申请空间才发挥作用的,在写入到文件后数据就重新安排了只要能够及时处理这部分乱指的指针就可以了.

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2009-07-02 23:52 |只看该作者
不需要存贮链表的prev、next之类的指针,只要存储你自己的数据即可,如加一个头部表示记录个数,后面逐个存放记录,相当于按数组存贮

论坛徽章:
0
7 [报告]
发表于 2009-07-03 01:16 |只看该作者
数据重新读回了内存,但程序的指针是指向数据的,跟那个地址没有关系

论坛徽章:
0
8 [报告]
发表于 2009-07-03 07:43 |只看该作者
这个倒是建议你考虑用Berkeley DB。见:
http://bbs3.chinaunix.net/thread-1490864-1-2.html

论坛徽章:
0
9 [报告]
发表于 2009-07-03 09:06 |只看该作者
只存数据,加上间隔符之类的标记,然后序列化到文件中

下次再反序列化就OK了,链表当然需要重新创建。。

论坛徽章:
0
10 [报告]
发表于 2009-07-03 09:06 |只看该作者
楼主那就不用指针了,用偏移量,你可以申请共享内存,然后用偏移量来指示
偏移量指的是共享内存中你使用的空间的地址-共享内存的起始地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP