【发布时间】:2012-11-19 08:13:41
【问题描述】:
我有一个包含我的结构的 .h 文件,我不能编辑这个文件:
struct KnightTree
{
int key;
int level;
int balance; //will be used in AVL only, and be ignored in other cases.
KnightTree* pLeftChild;
KnightTree* pRightChild;
};
还有一个我在这里编写代码的 .cpp 文件,我编写了一个代码来将 2 个值(键和级别)插入 BST:
void BSTinsert(KnightTree* tree, int k, int lvl)
{
KnightTree* newnode;
if (tree == NULL)
{
newnode->key=k;
newnode->level=lvl;
newnode->pLeftChild=NULL;
newnode->pRightChild=NULL;
tree = newnode;
}
else
{
if (tree->key > k)
BSTinsert(tree->pLeftChild,k,lvl);
else if (tree->key <= k)
BSTinsert(tree->pRightChild,k,lvl);
}
}
但是当我运行它时,控制台“思考”了大约 3 秒,并弹出错误提示 “exe 已停止工作” 所以我必须关闭程序时间>。我觉得很简单,但我现在有点困惑......我正在使用 Visual C++ 6.0(我必须使用这个旧版本......)
谢谢你们!
【问题讨论】:
-
您是否调试过代码,通常这些错误与缓冲区有关,并且您没有包含整个代码,因此您可以将打印语句用于填充缓冲区的缓冲区的缓冲区大小分配,我们可以从那里两个知道哪个代码块有问题
-
我认为您在这里可能有一个无限循环 - 在第一个 else 语句中您每次都在执行自己。最初你用 BSTInsert(tree->pLeftChild,k,lvl) 调用它,它会重新运行,落入“else if”部分,然后从那时起,它总是落入同一个区域“if (tree- >key
标签: c visual-c++-6