我想插入一個字符串,並使用trie數據結構進行搜索運行。這是我第一次使用指針的實現,所以我真的很困惑我在代碼中做了什麼錯誤,它給編譯錯誤。請幫助調試它,並請告訴我在我的指針邏輯中出了什麼問題。錯誤執行Trie樹
typedef struct trie {
unordered_multimap<char, struct trie> child;
bool isEnd;
} trie;
trie* newtrienode()
{
trie* newnode = (trie*)malloc(sizeof(trie));
newnode->isEnd = false;
return newnode;
}
trie* root = newtrienode();
void insert(string word)
{
trie* current = root;
for (int i = 0; i < word.length(); i++) {
char ch = word[i];
trie* node = current->child[ch];
if (node == NULL) {
trie* node = newtrienode();
current->child.insert(pair<char, trie>(ch, node));
}
current = node;
}
current->isEnd = true;
}
bool search(string word)
{
trie* current = root;
for (int i = 0; i < word.length(); i++) {
char ch = word[i];
trie* node = current->child[ch];
if (node == NULL) {
return false;
}
current = node;
}
return true;
}
什麼是編譯錯誤? – Sabuncu
@Sabuncu如果你編譯它並且看到它們會更好,因爲它是一個很長的錯誤線程。把這個錯誤留在這裏會使它很難閱讀,我希望你明白。 – query
a)你應該發佈錯誤,以便爲未來的讀者提供一個很好的問題。 b)代碼不是一個完整的最小例子。 – drescherjm