使用B +树创建索引文件

时间:2014-12-16 02:45:13

标签: c file indexing tree

我有一个有趣的挑战,其中B +树是数据文件的索引。该索引必须保存在索引文件中,稍后我们必须从该索引文件将索引加载到内存中。

这是我所拥有的B +树结构,来自http://www.amittai.com/prose/bpt.c

typedef struct node 
{
    void ** pointers;
    int * keys;
    struct node * parent;
    bool is_leaf;
    int num_keys;
} node; 

正如您所看到的,树的代码非常整洁且工作正常,所以现在我有一个b +树作为索引。但是,我不能简单地将树中的每个节点写入文件......在那里写的指针不适用于新的执行。如何实现我甚至开始使用B +树创建索引文件?提醒一下,创建索引后,必须使用索引文件将索引加载到内存中。

1 个答案:

答案 0 :(得分:1)

将指针转换为id(应该是节点的内存地址与唯一ID之间的一对一对应关系)。然后以后缀顺序遍历你的树或写一些id而不是指针。

要重建树,您只需从文件中读取数据,并查看您看到的每个新ID,为其提供一些内存。 (如果你的id从零开始是连续的,那么你可以使用固定大小的数组快速简单地为哈希表做到这一点。)

如果你想快速加载索引,可能有很多聪明的方法。