0

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) に設定されます。

あなたが提供できる助けをありがとう!

4

1 に答える 1