0

トライ構造に挿入関数を実装しようとしています。ここに私の構造体があります

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

ノードを挿入するアイテムと同じに設定したいとは思わない。ノードがリストであるか、辞書であるか、その他のものであるかについては、正確にはわかりません。ディクショナリ (try を実装する 1 つの方法) の場合は、単にエントリを置き換えるのではなく、キーと値のペアを更新する必要があることは明らかです。リストの場合は、エントリを置き換えるのではなく追加することをお勧めします。

編集: また、ノードで新しい試行を作成しないようには見えません。最上位レベルに 27 の試行の配列があるだけです。1 つのレイヤーを深くするとどうなりますか?

于 2012-10-19T04:19:43.557 に答える