Я пытаюсь создать программу кроссвордов с использованием BST, в настоящее время в дерево вставлены следующие слова:
word, will, wyr, wale, wilt, apple, abs, wack (вставлено в указанном порядке)
но каждый раз, когда я отлаживаю программу в visual studio, я получаю сообщение об ошибке
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.
Спасибо за любую помощь, которую вы можете предоставить!
Кажется, я создал две пройденные переменные И две переменные стека, пытаясь это сделать, похоже, теперь это работает!
Других решений пока нет …