Я пытаюсь реализовать функцию вставки для моей структуры Trie, вот моя структура
struct Trie {
bool isWord;
char letter;
Trie *letters[27];
Trie() {
isWord = false;
for ( int i = 0; i < NumChars; i += 1 ) {
letters[i] = NULL;
}
}
};
И это то, что я пытался для функции вставки
void insertin( Trie &node, const std::string &word )
{
int i = 0;
while (word[i] != '\0'){
int c = word[i] - 'a';
node.letters[c]->letter = word[i];
node = node.letters[c];
i++;
}
node.isWord = true;
}
Получение ошибок для «=» оператор, когда я устанавливаю node = node.letters[c];
я не могу использовать «=» назначать одинаковые типы? или я должен перегрузить это. а также возможная ошибка, любые предложения или помощь в отладке помогут! .. Также вот моя полная программа http://ideone.com/MqcBo
узел имеет тип «Trie», узел.letters [c] имеет тип «Trie *». Попробуйте node = * (node.letters [c]) — но убедитесь, что node.letter [c] не равен NULL.
Я не думаю, что вы хотите просто установить узел равным элементу, который вы вставляете. Мне неясно, что именно является узлом, будь то список, словарь или что-то еще. Если это словарь (который является одним из способов реализации попытки), то, очевидно, вы захотите обновить пару ключ-значение, а не просто заменить запись. Если это список, вы можете добавить запись, а не заменить ее.
Редактировать:
Также не похоже, что вы никогда не создаете новые попытки на узлах, у вас есть массив из 27 попыток на верхнем уровне, что происходит, когда вы получаете один слой глубиной?