双阵列Trie的实现

时间:2012-06-09 07:13:05

标签: c trie

我正在尝试理解并使用此Double-Array Trie implementation。但是,我似乎可以理解它们所呈现的理论实现与代码之间的类比 确切地说,以下是使用的主要Trie结构:

struct _Trie {
AlphaMap   *alpha_map;
DArray     *da;
Tail       *tail;

Bool        is_dirty;
};  

如果有人使用过这个实现,请你提供下面结构使用的高级解释,以及关于基数和校验数组的双数组概念的关系。特别是AlphaMap。

提前致谢,

1 个答案:

答案 0 :(得分:0)

libdatrie将unicode字符转换为紧凑的内部表示;你必须在创建一个trie时定义一个允许范围的列表。 alpha_map是字符范围的链接列表。

da是一个双数组结构。它包含basecheck数组。

tail是用于存储非分支后缀的数据结构(请参阅“后缀压缩”)。

is_dirty是一个标志,如果trie尚未存储到磁盘或从磁盘加载后更改,则设置为TRUE。