标签:highlight strong 剑指offer 入栈 nod 队列实现 两个栈实现队列 入队 int
题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:
栈的特性:先进后出
队列的特:先进先出
将栈1的内容全都弹出,然后推入栈2,弹出栈2 达到先进先出的功能;所以分为push栈 和 pop 栈
代码:
class Solution { public: void push(int node) { stack1.push(node); } int pop() { int result; if(stack2.empty()){ while(!stack1.empty()){ int node=stack1.top(); stack1.pop(); stack2.push(node); } } result=stack2.top(); stack2.pop(); return result; } private: stack<int> stack1; stack<int> stack2; };
拓展:
用两个队列实现一个栈:
思路:
两个队列都可以作为出栈的地方,但要保持一个栈为空;
出栈时:将其中有数据(n个)的队列,n-1个数据出队,然后入另一个队列,将最后一个数据出队,return返回;
入栈时:选择有数据的哪个队列入队,都为空入随便哪个队都可以
标签:highlight strong 剑指offer 入栈 nod 队列实现 两个栈实现队列 入队 int
原文地址:http://www.cnblogs.com/llauser/p/7513398.html