题目
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
假设两个栈为stack1和stack2,当push元素的时候,不断的往stack1里面push元素。由于栈是后进先出而队列是先进先出,那么想要pop元素的时候就需要把栈给逆过来,也就是把stack1里面的所有元素弹出并且压入到stack2中,这样stack2中的元素从顶往下的顺序就是队列出栈的顺序。
参考代码
class Solution
{
public:
void push(int node)
{
stack1.push(node);
}
int pop()
{
if (stack1.empty() && stack2.empty())
{
return -1;
}
if (stack2.empty())
{
while (!stack1.empty())
{
int temp = stack1.top();
stack1.pop();
stack2.push(temp);
}
}
int temp = stack2.top();
stack2.pop();
return temp;
}
private:
stack<int> stack1;
stack<int> stack2;
};