#include <iostream>
#include <stack>
#include <assert.h>
using namespace std;
template <typename T>
class queue
{
public:
//入队
void push(T node)
{
m1.push(node);
}
//出队列
void pop()
{
if(m2.empty())
{
while(!m1.empty())
{
m2.push(m1.top());
m1.pop();
}
}
assert(m2.size() > 0);
m2.pop();
}
//取队列中第一个元素
T top()
{
if(!m2.empty())
{
return m2.top();
}
else
{
while(!m1.empty())
{
m2.push(m1.top());
m1.pop();
}
return m2.top();
}
}
//判空
bool empty()
{
return m1.empty()&&m2.empty();
}
private:
stack<T> m1;
stack<T> m2;
};
//测试用例
void main()
{
queue<int> q;
for(int i=1;i<10;i+=2)
{
q.push(i);
}
while(!q.empty())
{
cout << q.top() <<" ";
q.pop();
}
}