我已经编写了这个程序,我似乎无法弄清楚它为什么会编译,但是当它运行时它会中途停止?我已经删除了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
答案 0 :(得分:2)
你的最后一次循环
while(!S2.empty()){
S.push(S2.top());
S.pop();
}
来自S
的{{1}}时,会弹出
。