所以我這一段代碼(這不是我),我無法理解我的生活是什麼這些結構的樣子。有人可以解釋嗎?在第二結構特里樹結構聲明
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