题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
C++STL stack的用法
在这之前,我们先要了解一下stack容器的简单用法。
创建stack对象
stack stack1;
入栈
stack1.push(int node);
出栈
stack1.pop();
获得栈顶元素
int top=stack1.top();
判断栈是否为空
stack1.empty();
解题思路
先创建两个栈stack1,stack2。push功能较简单,直接push到stack1即可。当要进行队列的pop操作时,我们先判断stack2里面有没有元素(即判断stack2是否为空)。若stack2不为空,直接pop出一个元素返回即可;若stack2为空,则需要把stack1中的元素全部pop,再push进入stack2,最后再获得stack2的栈顶元素即可。
代码:
class Solution
{
public:
void push(int node)
{
stack1.push(node);
}
int pop()
{
int top;
if(stack2.empty()!=true)
{
top=stack2.top();
stack2.pop();
}
else
{
while(stack1.empty()==false)
{
int temp=stack1.top();
stack2.push(temp);
stack1.pop();
}
top=stack2.top();
stack2.pop();
}
return top;
}
private:
stack<int> stack1;
stack<int> stack2;
};