a是专职进出栈的,b只是个中转站。元素集中存放在一个栈中,但不是指定(a 或 b)。
#include <iostream>
#include <queue>
using namespace std;
//入栈操作
void pushQueue(queue<int> &a, queue<int> &b, int num)
{
if(!a.empty()) //若队列a不为空
a.push(num);
else
b.push(num);
}
//出栈操作
void popQueue(queue<int> &a, queue<int> &b)
{
//若队列a不为空,则将a中元素依次入队到b中
//保留a中最后一个元素出队列,即出栈
if(!a.empty())
{
while(a.size()>1)
{
b.push(a.front());
a.pop();
}
cout<<a.front()<<endl;
a.pop();
}
//若队列b不为空,则将b中元素依次入队到a中
//保留b中最后一个元素出队列,即出栈
if(!b.empty())
{
while(b.size()>1)
{
a.push(b.front());
b.pop();
}
cout<<b.front()<<endl;
b.pop();
}
}
int main()
{
queue<int> a, b;
pushQueue(a, b, 1);
pushQueue(a, b, 2);
pushQueue(a, b, 3);
pushQueue(a, b, 4);
popQueue(a, b);
popQueue(a, b);
popQueue(a, b);
popQueue(a, b);
return 0;
}