0

我正在尝试为我的 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

4

2 回答 2

1

node 的类型是“Trie”,node.letters[c] 的类型是“Trie*”。尝试 node = *(node.letters[c]) - 但确保 node.letter[c] 不为 NULL。

于 2012-10-19T12:57:49.923 回答
0

我不认为您只想将节点设置为等于您要插入的项目。我不清楚节点到底是什么,它是一个列表、字典还是其他东西。如果它是一个字典(这是实现尝试的一种方法),那么显然您将想要更新键值对,而不仅仅是替换条目。如果它是一个列表,您可能希望附加该条目而不是替换它。

编辑:此外,您似乎从未在节点上创建新尝试,您只有在顶层有 27 次尝试的数组,当您深入一层时会发生什么?

于 2012-10-19T04:19:43.557 回答