我正在尝试使用 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,如果听起来它会增加计数,所以我可以发回一个数字,说明该通配符搜索有多少匹配。
此外,在 while 循环之前将 temp 设置为 root(word)。
感谢您提供的任何帮助!