循环通过它时堆栈中的负数

时间:2014-10-10 06:44:04

标签: c++ loops

我正在尝试编写一个函数,告诉用户堆栈中的负数。我坚持下面的以下内容,到目前为止我还没有得到正确的答案。我用几个测试堆测试了它。我认为问题是由于循环的放置方式。任何帮助将不胜感激!

int negcount = 0;
for(int i=0; i<mystack.size(); i++) {

    if(mystack.top() < 0) {
        negcount++;
        mystack.pop();
    }else {
        mystack.pop();
    }
}
return negcount;

2 个答案:

答案 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;