运行程序的一半停止?

时间:2018-05-01 07:03:12

标签: c++

我已经编写了这个程序,我似乎无法弄清楚它为什么会编译,但是当它运行时它会中途停止?我已经删除了reverse_stack并尝试没有它。还有同样的问题吗?有谁知道为什么会这样?

示例代码::

#include <iostream>
#include <stack>

using namespace std;

void reverse_stack(stack<int>&S, stack<int>& S1, stack<int>& S2){

    while(!S.empty()){
          S1.push(S.top());
          S.pop();
    }

    while(!S1.empty()){
          S2.push(S1.top());
          S1.pop();
    }

    while(!S2.empty()){
        S.push(S2.top());
        S.pop();
    }
}

int main()
{
    stack<int> S, S1, S2;
    S.push(1), S.push(2), S.push(3);

    cout<< "The top element of S is: " <<S.top() << endl;
    reverse_stack(S,S1,S2);

    cout<< "The top element of S is now: " << S.top() << endl;
    return 0;

}

输出:

The Top element of S is: 3

这里没有超越这一点。

预期OutPut ::

The Top element of S is: 3
The Top element of S is: 1

1 个答案:

答案 0 :(得分:2)

你的最后一次循环

while(!S2.empty()){
    S.push(S2.top());
    S.pop();
}

来自S的{​​{1}}时,会弹出