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

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

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

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

求教~谢谢~
...全文
137 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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]

这个考虑过,但是如果文件经过修改,因该需要修改很多 目标节点或数据在文件中的偏移量?

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧