C语言中的打印内容和计数

时间:2017-11-09 01:00:45

标签: c pointers recursion printing trie

我正在处理将打印出trie中包含的单词的代码,并记下单词出现的次数。我认为最有效的方法是在将单词添加到trie时将字母存储在相关节点的元素中。出现次数基本上是表示单词结束的标志,如果是单词的最后一个字母(表示单词计数),则会增加。

我在这一点上的斗争是如何让循环检查节点的所有子节点,而不是像现在一样直线,但我无法看到它是如何工作的。想法?

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++;
}

1 个答案:

答案 0 :(得分:0)

您要查找的字词是recursion,以下是您的操作方法:

if(root != NULL) {
    printf("%c\n", &root->letter);
    printf("%d\n", &root->occurences);
    int i;
    for (i = 0; i < 26; i++) {
        printTrie(root->children[i]); /* <-- Recursion */
    }
}

现在,它将首先打印根的值,然后打印每个孩子的值。

如果您希望它在根之前打印每个孩子的值,请将printf移动到 之后 for-loop