题解 | #用两个栈实现队列#
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
class Solution { public: /* push:stack1 用来存放 stack2.出 */ void push(int node) { while(!stack2.empty()) { stack1.push(stack2.top()); stack2.pop(); } stack1.push(node); } int pop() { //将stack1推到stack2中 while(!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } int value=stack2.top(); stack2.pop(); return value; } private: stack<int> stack1; stack<int> stack2; };
思路;用stack1来存放数据,用stack2来出数据。所以要实现先进先出,在存的时候,要保证stack2是空的,出的时候,再将stack1的数据推到stack2中。实现先进先出。