【发布时间】:2017-11-09 01:00:45
【问题描述】:
我正在编写代码,该代码将打印出 trie 中包含的单词并记录该单词出现的次数。我认为最有效的方法是在将单词添加到 trie 时将字母存储在相关节点的元素中。 Occurrences 基本上是一个表示单词结束的标志,如果它是单词的最后一个字母(表示单词计数),则递增。
此时我的难题是如何让循环检查节点的所有子节点,而不是像现在那样在一条直线上,但我无法想象它是如何工作的。想法?
struct Node{
char letter;
struct Node children[26];
int occurences;
};
printTrie(struct node root){
int i = 1;
while(root[i] != NULL){
fprint(root.letter);
printTrie(root->children[]);
}
i++;
}
【问题讨论】:
-
那不是有效的 C 代码。
root[i]对root无效,即structanything,更不用说神秘的struct node,您的代码列表中未提供该struct node。发布真实代码,请。 -
这看起来您缺少许多星号
*指示指针。struct Node内不能有struct Node数组;宇宙不够大,无法容纳这个结构。您可以拥有一个struct Node *数组(指向struct Node的指针)。您的函数调用可能也应该采用struct Node *root— 它目前采用struct node的值,但您还没有显示struct node的样子,除了它与您显示的struct Node无关( C 是区分大小写的语言)。
标签: c pointers recursion printing trie