版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/90109214
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
入栈时直接把元素推入stack1,出栈时需要借助stack2来实现像队列一样“先进先出”。当stack2不为空时,先将stack2中的元素一一取出;当stack2为空时,把stack1中的元素全部推入stack2,这样stack1的栈底元素就会出现在stack2的栈顶,stack1的栈顶元素就会出现在stack2的栈底。最后将stack2的元素一一取出,这样就能通过俩个栈来实现像队列一样“先进先出”的操作。
class Solution
{
public:
void push(int node)
{
stack1.push(node);
}
int pop()
{
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top()); //将stark1的栈顶元素推入stack2
stack1.pop();
}
}
int result = stack2.top();
stack2.pop();
return result;
}
private:
stack<int> stack1;
stack<int> stack2;
};