我正在尝试编写一个函数,告诉用户堆栈中的负数。我坚持下面的以下内容,到目前为止我还没有得到正确的答案。我用几个测试堆测试了它。我认为问题是由于循环的放置方式。任何帮助将不胜感激!
int negcount = 0;
for(int i=0; i<mystack.size(); i++) {
if(mystack.top() < 0) {
negcount++;
mystack.pop();
}else {
mystack.pop();
}
}
return negcount;
答案 0 :(得分:2)
你的for循环是错误的,因为每次你从堆栈中弹出一个项目。这是适合你的:
int negcount = 0;
while(mystack.size()>0) {
if(mystack.top() < 0) {
negcount++;
mystack.pop();
}else {
mystack.pop();
}
}
return negcount;
答案 1 :(得分:1)
我不认为这是循环播放您正在修改的集合的最佳方式。 if / else中的一些陈述有点多余。我对C ++不太熟悉,但你可以这样做:
while(mystack.size() > 0)
{
if (mystack.top() < 0) negcount++;
mystack.pop();
}
return negcount;