关于B-树节点指针的存储问题

xjbwd 2008-04-13 11:12:37
B-树节点都存在外存上,那么节点的指针应该如何处理

B树查找时每次只读入一个节点到内存,那么节点中的指针应该存的什么东西?它指向的节点在外存的物理地址?

我的想法是 每个节点保存在一个文件中,然后节点中的指针所指向的节点用节点文件名来代替,但总感觉这么好象不太好,不知道还有没有更好的办法?

求教~谢谢~
...全文
78 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
rushman 2008-04-14
[Quote=引用楼主 xjbwd 的帖子:]
B-树节点都存在外存上,那么节点的指针应该如何处理

B树查找时每次只读入一个节点到内存,那么节点中的指针应该存的什么东西?它指向的节点在外存的物理地址?

我的想法是 每个节点保存在一个文件中,然后节点中的指针所指向的节点用节点文件名来代替,但总感觉这么好象不太好,不知道还有没有更好的办法?

求教~谢谢~
[/Quote]
把指针看作一种描述,用来找到节点、数据的描述。那么它可以是一个偏移量——目标节点或数据在文件中的偏移量。
回复
xjbwd 2008-04-14
额 确实忽略了节点分裂和合并了。。。

再观望下

要是实在没有更好的办法 也只能考虑用文件偏移量了
回复
xjbwd 2008-04-14
用C语言实现的额。。。
回复
CathySun118 2008-04-14
尝试使用XML文件,都保存到一个文件中
回复
rushman 2008-04-14
[Quote=引用 6 楼 xjbwd 的回复:]
能不能得到 文件在硬盘中的物理地址呢 或者磁盘扇区? 然后用absread() ?
[/Quote]
这样只会使问题更复杂……
回复
xjbwd 2008-04-14
能不能得到 文件在硬盘中的物理地址呢 或者磁盘扇区? 然后用absread() ?
回复
rushman 2008-04-14
有些工作是不可避免的。
如果要减少节点位置发生变化导致的数据修改,可以为节点建一个查找表。
回复
xjbwd 2008-04-14
[Quote=引用 3 楼 rushman 的回复:]
把指针看作一种描述,用来找到节点、数据的描述。那么它可以是一个…
[/Quote]

这个考虑过,但是如果文件经过修改,因该需要修改很多 目标节点或数据在文件中的偏移量?
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-13 11:12
社区公告
暂无公告