栈——两个栈实现队列的pop和push
用两个栈实现队列
http://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6
思路:
push:直接找一个stack装
pop:由于stack1本身的pop是弹出最后进入的,但是队列是弹出最先进入的,所以
找到另外一个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()); stack1.pop(); } } int ret = stack2.top(); stack2.pop(); return ret; } private: stack<int> stack1; stack<int> stack2; };