我正在尝试使用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 (!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)。
感谢您提供任何帮助!
答案 0 :(得分:0)
似乎我在匆忙中创建了两个遍历变量和两个堆栈变量以完成此操作,它现在似乎正常工作!