我需要在堆栈中找到一个元素,所以我发现我必须弹出元素,直到我找到这个元素或堆栈是空的。换句话说,找不到元素时不弹出或者堆栈为空。我的思维方式有什么问题?
while (!(stack.top()==searched || stack.empty()))
{
tmp.push(stack.top());
stack.pop();
}
如果堆栈没有计算搜索到的元素,则代码返回核心转储,但如果stack.top()==搜索总是返回0,并且stack.empty返回1,1或0仍然是1; !1 = 0和'while'应该停止。 这是不是有可能做到这一点?我愿意接受建议。
答案 0 :(得分:2)
您的代码似乎依赖于short circuit evaluation。但是,它的工作方式是
cond_a || cond_b
首先评估cond_a
,然后仅在需要时cond_b
。在这种情况下,那么,你的代码只会在检查top
之后检查堆栈是否为空,这显然是一个错误。你应该改变你的两个内部条件的顺序。