面试题7:用两个栈实现队列
来源:互联网 发布:阿里巴巴北京总部 知乎 编辑:程序博客网 时间:2024/06/05 10:06
题目:用两个栈实现一个队列。队列声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
解题思想:假设有栈stack1和stack2,依次插入元素a、b、c,只需直接插入到stack1中;
要删除队列头部时,需要将a、b、c先弹出并依次存入stack2,再弹出stack2的尾结点a即可;
此时要插入元素d,仍然插入stack1;若要删除元素则stack2弹出,当stack2为空时将stack1的元素按上步思路依次弹出再存入stack2中。
综上,队列插入元素,直接将元素插入stack1;
队列删除元素,则从stack2弹出元素,如果stack2为空,则将stack1中的元素依次弹出并插入stack2中,然后再弹出栈顶元素。(stack2依次出栈元素顺序与删除队列头部的顺序一致,stack1则相反)。
java实现:
public class QueueWithTwoStacks {private Stack<Integer> stack1=new Stack<Integer>();private Stack<Integer> stack2=new Stack<Integer>();//插入元素到队尾public void appendTail(Integer a) {stack1.push(a);}//队头弹出元素public Integer deleteHead() {if(stack2.isEmpty()) {while(!stack1.isEmpty()) {//将stack1中的元素弹出并存入satck2stack2.push(stack1.pop());}}return stack2.pop();}
阅读全文
0 0
- 面试题7 两个栈实现队列
- 剑指offer-->面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7:用两个队列实现栈
- 面试题7 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7-用两个栈实现队列
- 面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7 用两个栈实现队列
- 《剑指Offer》面试题7:用两个栈实现队列
- 面试题7:用两个栈实现队列
- 【剑指offer】 面试题7: 用两个栈实现队列
- 面试题7,用两个栈实现队列
- 面试题7:用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 我的刷题之路
- Day07 --构造方法 static Math对象
- Python学习笔记(十)—函数和变量
- 循环10秒检测是否存在某进程
- MyBatis框架的使用
- 面试题7:用两个栈实现队列
- myBatis连接超时问题
- Jboss环境,Spring3.1.2与Hadoop2.3.0冲突解决方案
- ELK + Filebeat 搭建日志系统
- Jetty源码分析之ScopedHandler及Handler链
- window平台上基于python搭建一个堡垒级系统
- 12.20学习计划
- JS的事件响应,与网页交互
- 第十二次学习报告