BSTを利用してクロスワードパズルプログラムを作成しようとしています.現在、次の単語がツリーに挿入されています:
word, will, wyr, wale, wilt, apple, abs, wack (この順で挿入)
しかし、ビジュアルスタジオでプログラムをデバッグするたびに、エラーが発生します
Exception thrown at 0x008DE28C in AVLBSTcrosswordhunter.exe: 0xC0000005: Access violation writing location 0x0000001C.
ただし、変数をトレースするときに、トラバースされた変数が 1 に設定されないため、この while ループを終了しません。内部でエラーが発生しています。場所と理由がわかりません。
while (!traversed)
{
if (temp != NULL)
{
if (temp->word.substr(0, sub_num) == value.substr(0, sub_num))
{
count++;
}
s.push(temp);
temp = temp->left;
}
else
{
if (!s.empty())
{
temp = s.top();
s.pop();
temp = temp->right;
}
if (s.empty())
{
traversed = 1;
}
}
}
明確にするために、私が探している単語は「w ***」(「*」はワイルドカード) であるため、if ステートメントは、ポインタ temp に部分文字列 w があるかどうかを確認し、音がある場合はカウントを増やします。そのワイルドカード検索に一致する数を返すことができます。
また、temp は while ループの前に root(word) に設定されます。
あなたが提供できる助けをありがとう!