#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int popStack(queue<int> &q1, queue<int> &q2){
int top;
if(q1.empty() && q2.empty()){
return -1;
}else{
if(q1.empty()){
while (q2.size() != 1){
q1.push(q2.front());
q2.pop();
}
top = q2.front();
q2.pop();
}else{
while(q1.size() != 1){
q2.push(q1.front());
q1.pop();
}
top = q1.front();
q1.pop();
}
}
return top;
}
void pushStack(int data, queue<int> &q1, queue<int> &q2){
if(q1.empty() && q2.empty()){
q1.push(data);
}else{
if(!q1.empty()){
q1.push(data);
}else{
q2.push(data);
}
}
}
int main()
{
queue<int> q1;
queue<int> q2;
pushStack(1,q1,q2);
pushStack(2,q1,q2);
cout<<popStack(q1, q2)<<endl;
cout<<popStack(q1, q2)<<endl;
pushStack(3,q1,q2);
pushStack(4,q1,q2);
pushStack(5,q1,q2);
cout<<popStack(q1, q2)<<endl;
cout<<popStack(q1, q2)<<endl;
cout<<popStack(q1, q2)<<endl;
return 0;
}
测试结果:2 1 5 4 3