这道题目的思路就是我们构造两个队列来模拟,和用栈模拟队列相反,用栈模拟队列是在出队时做特殊处理,而队列模拟栈就是在入栈时特殊处理,我们用一个一个que1和que2,que2作为辅助暂存,入队时,先把数据放入que2,然后判断que1是否为空,不是证明之前曾有数据进来,就把que1的数据全部放入que2,然后交换两个队列,这样新数据就进到了队列头,那么出队就相当于出栈的顺序了
MyStack() {
}
queue<int>que1;
queue<int>que2;
void push(int x) {
que2.push(x);
if(!que1.empty())
{
while(!que1.empty())
{
que2.push(que1.front());
que1.pop();
}
}
swap(que1,que2);
}
int pop() {
auto x=que1.front();
que1.pop();
return x;
}
int top() {
auto x=que1.front();
return x;
}
bool empty() {
return que1.empty();
}