- 两个队列实现一个栈的主要思想在于:在任意时刻我们都需要保证一个队列是空的,因此我们可以固定队列2在任何时刻都为空。
代码如下:(参考力扣官网题解)
class MyStack
{
public:
queue<int> queue1;
queue<int> queue2;
//Initialize your data structure here.
MyStack()
{
}
// Push element x onto stack.
void push(int x)
{
queue2.push(x);
while (!queue1.empty())
{
queue2.push(queue1.front());
queue1.pop();
}
swap(queue1, queue2);
}
// Removes the element on top of the stack and returns that element.
int pop()
{
int r = queue1.front();
queue1.pop();
return r;
}
// Get the top element.
int top()
{
int r = queue1.front();
return r;
}
// Returns whether the stack is empty.
bool empty()
{
return queue1.empty();
}
};