使用队列实现栈的下列操作:
- push(x) -- 元素 x 入栈
- pop() -- 移除栈顶元素
- top() -- 获取栈顶元素
- empty() -- 返回栈是否为空
解题思路:首先用队列A保存元素,栈顶元素即为队列的rear元素,栈是否为空即为队列是否为空,执行pop操作时,先把除最后一个元素之外的元素弹出,保存在队列B中,然后弹出队列A中的最后一个元素,再把队列B的元素弹出的同时压入队列A,直到队列B为空。
class Solution {
private:
queue<int> Queue1, Queue2;
unsigned int number = 0;
public:
void push(int x);
int pop(void);
int top(void);
bool empty(void);
};
void Solution::push(int x)
{
Queue1.push(x);
number ++;
}
int Solution::pop(void)
{
int temp = 0;
if(Queue1.empty() == true)
{
return false;
}
unsigned int index = 0;
for(index = 0; index < number - 1; index ++)
{
Queue2.push(Queue1.front());
Queue1.pop();
}
temp = Queue1.front();
Queue1.pop();
for(index = 0; index < number - 1; index ++)
{
Queue1.push(Queue2.front());
Queue2.pop();
}
number --;
return temp;
}
int Solution::top(void)
{
if(Queue1.empty() != true)
{
return Queue1.back();
}
else
{
return false;
}
}
bool Solution::empty(void)
{
return Queue1.empty();
}