其实两个栈实现队列很简单,入栈和入队列的性质都是一样的,将元素存储起来,重点是出栈和出队列的形式是完全不同的,也就是FIFO和LILO的区别,整体思路很简单,出队列无非就是入a栈再出a栈,再进入b栈,再出b栈,这样我们就完成了一次出队列的操作。具体实现源码如下:
class Solution { public: void push(int node) { stack1.push(node); } int pop() { int res; if(!stack2.empty()){ res=stack2.top(); stack2.pop(); } else if(!stack1.empty()){ while(!stack1.empty()){ res=stack1.top(); stack1.pop(); stack2.push(res); } res=stack2.top(); stack2.pop(); } return res; } private: stack<int> stack1; stack<int> stack2; };
浙公网安备 33010602011771号