c++逻辑错误(boolean)
C++ Logic Error (boolean)
template <class T>
bool BST<T>::printSubtree(T item)
{
int id;
bool result;
if (root==NULL)
{
cout << "Empty Tree, Please insert data" << endl;
return false;
}
cout << "Enter ID to print sub-tree" << endl;
cin >> id;
result=searchSubTree(id, item);
if(result == false)
{
cout << "Record Not Found" << endl << endl;
}
//preOrderPrint();
return true;
}
template <class T>
bool BST<T>::searchSubTree(int target, T &item)
{
BTNode<T> *cur, *curtemp;
bool flag = false;
if (root==NULL)
{
cout << "Empty Tree, Please insert data" << endl;
return false;
}
cur = root;
curtemp = root;
while(!flag && cur!= NULL)
{
if(curtemp->item.id == target)
{
flag = true;
root = curtemp; //promote desired node to become root temporarily
inOrderPrint();
flag = true;
}
else if (curtemp->item.id < target) //target value greater than current value, search right sub-tree
{
curtemp = curtemp->right;
}
else if (curtemp->item.id > target) //search left sub-tree
{
curtemp = curtemp -> left;
}
root = cur; //set the root position to its ori place
}
return flag;
}
在上面的代码中,一切运行正常。然而,为什么我试图输入一个不存在的值(id输入),我的程序只是崩溃,它不能继续到if(result == false)
。我可以知道这里有什么问题吗?
谢谢你的指导!
你的while语句应该使用curtemp而不是cur。
while(!flag && curtemp!= NULL)
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- c++逻辑错误(boolean)