1

我试图理解和使用这个Double-Array Trie implementation。但是,我似乎可以理解他们提出的理论实现与代码之间的类比。
准确地说,以下是使用的主要 Trie 结构:

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

Bool        is_dirty;
};  

如果有人使用过这个实现,您能否提供一个高级解释,说明以下结构的使用以及与基本数组和检查数组的双数组概念的关系。特别是 AlphaMap。

提前致谢,

4

1 回答 1

0

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

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

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

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

于 2012-07-22T07:54:54.233 回答