我正在尝试理解并使用此Double-Array Trie implementation。但是,我似乎可以理解它们所呈现的理论实现与代码之间的类比 确切地说,以下是使用的主要Trie结构:
struct _Trie {
AlphaMap *alpha_map;
DArray *da;
Tail *tail;
Bool is_dirty;
};
如果有人使用过这个实现,请你提供下面结构使用的高级解释,以及关于基数和校验数组的双数组概念的关系。特别是AlphaMap。
提前致谢,
答案 0 :(得分:0)
libdatrie
将unicode字符转换为紧凑的内部表示;你必须在创建一个trie时定义一个允许范围的列表。 alpha_map
是字符范围的链接列表。
da
是一个双数组结构。它包含base
和check
数组。
tail
是用于存储非分支后缀的数据结构(请参阅“后缀压缩”)。
is_dirty
是一个标志,如果trie尚未存储到磁盘或从磁盘加载后更改,则设置为TRUE。