题目
分析
栈:先进后出
队列: 先进先出,
那么两个栈刚好可以满足队列的性质
需要注意的是,要想实现我们的想法,必须使得栈2是空的,如果栈2不为空,我们先要将栈2元素出栈,再来执行上面的操作
c++代码
class Solution
{
public:
//用栈1之执行入队操作
void push(int node) {
stack1.push(node);
}
int pop() {
int r = 0; //定义一个变量用于接收最终栈2的出栈元素,也就是队列的出队元素
//首先判断当栈2 不为空的时候
if(!stack2.empty())
{
//直接将栈2的元素出栈
r = stack2.top();
stack2.pop();
}
else
{
//如果栈2 为空,而且栈1不为空
while(!stack1.empty())
{
//将栈1的元素压入栈2中
stack2.push(stack1.top());
stack1.pop();
}
//最终栈2栈顶元素出栈
r = stack2.top();
stack2.pop();
}
//返回栈2的栈顶元素即可(就是队列元素出队的情况)
return r;
}
private:
stack<int> stack1;
stack<int> stack2;
};

京公网安备 11010502036488号