文字をCのトライデータ構造に挿入する基本機能を実装しようとしています。何が間違っているのかを理解しようとしていますが、最後の日かそこらで困惑/立ち往生しています。
私が書いたいくつかのコードを次に示します。
TR head = NULL;
void initDict () {
head = NULL;
}
TR newNode (char item) {
TR temp;
temp = malloc (sizeof(*temp));
temp->thisChar = item;
temp->child = NULL;
temp->sibling = NULL;
return temp;
}
TR insertInOrder (char item, TR trie) {
if (trie == NULL) {
trie = newNode(item);
} else if (trie->thisChar < item) {
insertInOrder(item, trie->sibling);
} else if (trie->thisChar > item) {
char temp = trie->thisChar;
trie->thisChar = item;
insertInOrder(temp, trie->sibling);
}
return trie;
}
void insert (char *word) {
char letter = *word;
TR temp = NULL;
while (*word != '\0') {
letter = *word;
if (head == NULL) {
head = newNode(letter);
temp = head->child;
word++;
} else {
temp = insertInOrder(letter, temp);
temp->child = head->child;
head->child = temp;
word++;
}
}
}
私はこれを理解することはできません...
PS checkLetter は、文字がすでにトライ内にあるかどうかをチェックするブール関数です (トライ構造をトラバースすることにより、つまり、トライ = トライ->兄弟)
任意の助けをいただければ幸いです=]
乾杯!
編集: コードを変更して、insertInOrder が値を返すようにしましたが、insert は void 関数であり、void 関数のままにしなければならないため、ノードをトライのヘッドにさらに挿入する方法がわかりません (つまり、ヘッド->子、頭->子->子など)