思路:实现pop操作的时候,如果B中有元素,直接取B.top(),否则从A所有元素加入到B中,再取顶端。
实现push操作的时候,因为每次A都是整段地加入到B中所以顺序不会错,直接加入到A中就行,
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4 + 10;
class Queue
{
public:
Queue()
{
while(A.size())A.pop();
while(B.size())B.pop();
}
int pop()
{
if(B.size())
{
int t = B.top();
B.pop();return t;
}
else
{
while(A.size())B.push(A.top()),A.pop();
}
int t = B.top();
B.pop();return t;
}
void push(int x)
{
A.push(x);
}
private:
stack<int> A,B;
};
int main()
{
Queue q;
for(int i = 1;i <= 10;i ++)
{
q.push(i);
}
for(int i = 1;i <= 10;i ++)
{
cout << q.pop() << " " ;
}
puts("");
return 0;
}