所以我这一段代码(这不是我),我无法理解我的生活是什么这些结构的样子。有人可以解释吗?在第二结构特里树结构声明
typedef struct trie_node trie_node_t;
struct trie_node
{
int value;
trie_node_t *children[ALPHABET_SIZE];
};
// trie ADT
typedef struct trie trie_t;
struct trie
{
trie_node_t *root;
int count;
};
诠释计数是用于计数把树中的所有的话,但我想知道每一个字,多少次摆在那里,而且除了修改代码的其余部分,应该如何我修改结构来实现这一目标?
休息代码:http://pastebin.com/9zQuCBjb
谢谢,你介意我问2个问题吗?首先,void插入函数和“trie_node_t * pCrawl; pCrawl = pTrie-> root;”那是什么意思?然后在最后,pCrawl-> value = pTrie-> count;我不明白pCrawl在什么时候成为我们的树 – deviance
只有一个特里,但是有许多节点。开始时,trie中有一个节点,在'initialize()'中创建。然后你沿着trie树走,“level”是下降的等级(不包括根),这也是你的字符串的索引。走下来是通过'pCrawl = pCrawl-> children [index];'完成的。它就像链接列表中的“p = p-> next”,只有在这里,每个节点有26个子节点,其中一些节点为NULL。这就是我在括号内的草图中显示的内容。 (代码不检查'CHAR_TO_INDEX'转换的范围,并假定char是一个大写字母。) –
谢谢,我想我现在明白了。所以要添加我想要的,我应该添加“int计数器”typedef结构trie_node trie_node_t;并在void插入结束时,在循环之后和最后一行之前插入“if(pCrawl-> value!= 0)”pCrawl-> counter ++ else将其设置为1;“对?编辑:它的工作原理:D现在我必须弄清楚其他一些事情,比如如何按字母顺序打印所有这些单词,并找到100个重复次数最多的单词。 – deviance