面试题07_用两个栈实现队列——剑指offer系列
2015-07-25 09:58
316 查看
题目描述:
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。解题思路:
栈的特性是后进先出,而队列的特性是先进先出。因此,用两个栈来模拟队列的功能,在输入数据的时候,一次压入栈A,当要输出数据的时候,则将栈A的数据全部依次弹出,压入栈B 。
这样,栈B 栈顶就是队列头元素,依次从栈B弹出,即队列的出队操作。
每次只有当栈B 已经出栈完全了,才进行下一次的B栈入栈。
代码实现:
<span style="font-size:18px;">class Solution { public: void push(int node) { stack1.push(node); } int pop() { if(stack2.size()<= 0) { while(stack1.size()>0) { int num = stack1.top(); stack1.pop(); stack2.push(num); } } int ans = stack2.top(); stack2.pop(); return ans; } private: stack<int> stack1; stack<int> stack2; };</span>
相关文章推荐
- (剑指Offer)面试题31:连续子数组的最大和
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 黑马程序员——Java IO总结一
- 程序员,为什么千万不要重写代码?
- 关于“构造函数”中的几个小问题,也许面试会问到哦~
- 神奇的decimal,也许面试会问到哦~
- 【黑马程序员】----java基础---反射
- 黑马程序员——Java基础-异常
- 【LeetCode-面试算法经典-Java实现】【029-Divide Two Integers(两个整数相除)】
- 【LeetCode-面试算法经典-Java实现】【028-Implement strStr() (实现strStr()函数)】
- 【LeetCode-面试算法经典-Java实现】【027-Remove Element(删除数组中指定的元素)】
- 程序员,为什么千万不要重写代码?
- Two Sigma面试专题
- 阿里电话面试问题----100万个URL如何找到出现频率最高的前100个?
- 黑马程序员--面向对象02
- 【面试加分项】java自定义注解之申明注解
- 第一次使用拉勾网求职经历
- 全面解析《嵌入式程序员应该知道的16个问题》
- 出来行迟早是要还的(篇四):游戏开发离职日志和面试日志
- 程序员技术练级攻略(转)