社区
C语言
帖子详情
B树保存到硬盘的问题,苦思冥想不得其解,望高人指点一二
HelloHalo
2006-03-18 07:30:35
数据结构书上关于外部排序的说明“在B-树上进行查找,首先在磁盘上查找到节点,然后将节点装入内存,调用内部查找算法查找相关关键字”
我的问题是,如果B-树定义的时候是每个节点包含N个关键字和N+1个指向子节点的指针,而指针指向的是内存地址。怎么做到把B-树和数据文件保存到磁盘上之后那个指向子节点的指针仍然指向数据文件相关的节点?
不知道我说明白没有。。。。
...全文
435
10
打赏
收藏
B树保存到硬盘的问题,苦思冥想不得其解,望高人指点一二
数据结构书上关于外部排序的说明“在B-树上进行查找,首先在磁盘上查找到节点,然后将节点装入内存,调用内部查找算法查找相关关键字” 我的问题是,如果B-树定义的时候是每个节点包含N个关键字和N+1个指向子节点的指针,而指针指向的是内存地址。怎么做到把B-树和数据文件保存到磁盘上之后那个指向子节点的指针仍然指向数据文件相关的节点? 不知道我说明白没有。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
joeqi
2006-04-16
打赏
举报
回复
把数据文件划分成由固定大小组成的块, 某个块就相当于一个B树的结点,然后son数组记录的不是内存地址,而是这些块的编号就行了.
stonepeter
2006-04-15
打赏
举报
回复
楼上我的回答可能是有问题的。思考和学习中!
stonepeter
2006-04-15
打赏
举报
回复
楼主的问题我没有看懂。
我们一起看看B-树的数据结构
B-树的存储结构
#define Max l000 //结点中关键字的最大数目:Max=m-1,m是B-树的阶
#define Min 500 //非根结点中关键字的最小数目:Min=┌m/2┐-1
typedef int KeyType; //KeyType应由用户定义
typedef struct node{ //结点定义中省略了指向关键字代表的记录的指针
int keynum; //结点中当前拥有的关键字的个数,keynum《Max
KeyType key[Max+1]; //关键字向量为key[1..keynum],key[0]不用。
struct node *parent; //指向双亲结点
struct node *son[Max+1];//孩子指针向量为son[0..keynum]
}BTreeNode;
typedef BTreeNode *BTree;
-----------------------------------
如果每个结点你都想记录到对应的文件的话,按说明是要新增一个文件指针作为结点内容的。
typedef struct node{ //结点定义中省略了指向关键字代表的记录的指针
int keynum; //结点中当前拥有的关键字的个数,keynum《Max
KeyType key[Max+1]; //关键字向量为key[1..keynum],key[0]不用。
struct node *parent; //指向双亲结点
struct node *son[Max+1];//孩子指针向量为son[0..keynum]
FILE *fp[Max+1]; // 文件
}BTreeNode;
digifish
2006-03-22
打赏
举报
回复
差不多就是这个意思.
HelloHalo
2006-03-22
打赏
举报
回复
那如果B树的结构改成这样呢?
把指向下一节点的指针改称那个节点的编号,编号按层次顺序,这样遍历的时候读入第一个节点,然后按编号查找其余节点。是不是要容易一些?
Hellohuan
2006-03-22
打赏
举报
回复
en!
tudou614
2006-03-20
打赏
举报
回复
mk
digifish
2006-03-20
打赏
举报
回复
需要自己保存一些额外的标志位来纪录每一节点与内存中的那个节点对应,然后读入内存的时候,给节点分配内存,并且动态的加入到B树中。
lbaby
2006-03-19
打赏
举报
回复
可以按照一定的遍历顺序储存,只要写和读都是按照同一个顺序,那么就不会错,
对B树的结构不熟,不能帮你更多了
HelloHalo
2006-03-19
打赏
举报
回复
没人理我。。。。
用Java编写的送给同学生日的生日祝福软件
好朋友过生日,想给她一份异样的惊喜,于是就
苦思冥想
用Java做出了一个小生日祝福软件,感觉挺有意思的!朋友们可以下载看看并给点意见,如有不足请多多指教
sqlserver 2008R2的jdbcjar包
sqlserver 2008R2的工具jar包,在学习或者工作中jar包是连接sqlserver 2008R2的纽带,比如JAVA举例,在编码中如果不导入这个jar包,会爆出很多的错误,
考勤系统SSH的JAVAWEB源码
考勤系统 我作为培训生在培训时候,接触和自己做的源码,分享一下, 为了高薪就业,我花了不少心血去参加培训,在培训中,也下了很大的功夫 ,学会了太多太多,就业之后才发现,会的东西还是太少, 真正的就业了,才发现,应该抓紧时间,多会写东西,然后追逐自己的利益, 得到自己的升职加薪。我们可以的。自学很多知识 ,在这里分享一下,在北上广深大公司们, 从小功能开始的编码之路。值得我拿出来分享, 考勤系统考勤系统考勤系统
SSH图书管理系统JAVAWEB源码
图书管理系统JAVAWEB源码 图书管理系统JAVAWEB源码 我作为培训生在培训时候,接触和自己做的源码,分享一下, 为了高薪就业,我花了不少心血去参加培训,在培训中,也下了很大的功夫 ,学会了太多太多,就业之后才发现,会的东西还是太少, 真正的就业了,才发现,应该抓紧时间,多会写东西,然后追逐自己的利益, 得到自己的升职加薪。我们可以的。自学很多知识 ,在这里分享一下,在北上广深大公司们, 从小功能开始的编码之路。值得我拿出来分享, 图书管理系统JAVAWEB源码
Hibernate save方法无法
保存
的
问题
最近做项目使用了hibernate,由于对这个框架不是很熟悉,遇到了很多坑。
问题
描述: 执行save方法时,不报错,中间表的内容没有被
保存
到数据库中。 可能原因: 1.实体类没有赋值 debug模式查看,传值没有
问题
,排除这种原因。 2.没有配置事务或事务没有提交 在代码内手动抛出异常,数据回滚,排除。
苦思冥想
找不到错误的原因,几天未果。突然想到要
保存
的表是一张中间表,关联的表
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章