0

我正在尝试使用 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)。

感谢您提供的任何帮助!

4

1 回答 1

0

似乎我创建了两个遍历变量和两个堆栈变量以急于完成这项工作,它现在似乎可以工作了!

于 2015-10-07T01:07:46.127 回答