试题7:用两个栈实现队列+使用两个队列实现栈
来源:互联网 发布:各算法时间复杂度 编辑:程序博客网 时间:2024/06/15 15:08
用两个栈实现队列的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除结点。
public class Test07 {Stack<Integer>stack1=new Stack<>();Stack<Integer>stack2=new Stack<>();public void appendTail(int key){stack1.add(key);//在队列尾部添加元素}public int deleteHead(){if (stack2.size()<=0) {while(stack1.size()>0){stack2.push(stack1.pop());}}return stack2.pop();//删除队列头部元素}public static void main(String[] args) { // 在队列中增加元素 Test07 cq = new Test07(); for (int i = 0; i < 5; i++) { cq.appendTail(i); } // 依次取出 for (int i = 0; i < 5; i++) { System.out.println(cq.deleteHead()); } }}使用两个栈实现一个队列
public class Test07_02 { Queue<Integer> queue1 = new ArrayDeque<>(); Queue<Integer> queue2 = new ArrayDeque<>(); public void push(int node) { //两个栈都为空时,优先考虑queue1 if (queue1.isEmpty()&&queue2.isEmpty()) { queue1.add(node); return; } //如果queue1为空,queue2有元素,直接放入queue2 if (queue1.isEmpty()) { queue2.add(node); return; } if (queue2.isEmpty()) { queue1.add(node); return; } } public int pop() { //两个栈都为空时,没有元素可以弹出 if (queue1.isEmpty()&&queue2.isEmpty()) { try { throw new Exception("stack is empty"); } catch (Exception e) { } } //如果queue1为空,queue2有元素, 将queue2的元素依次放入queue1中,直到最后一个元素,我们弹出。 if (queue1.isEmpty()) { while (queue2.size()>1) { queue1.add(queue2.poll()); } return queue2.poll(); } if (queue2.isEmpty()) { while (queue1.size()>1) { queue2.add(queue1.poll()); } return queue1.poll(); } return (Integer) null; } public static void main(String[] args) { Test07_02 test = new Test07_02(); test.push(1); test.push(2); test.push(3); test.push(4); System.out.println(test.pop()); System.out.println(test.pop()); test.push(5); System.out.println(test.pop()); System.out.println(test.pop()); System.out.println(test.pop()); }}
阅读全文
0 0
- 试题7:用两个栈实现队列+使用两个队列实现栈
- 面试题7 两个栈实现队列
- 面试题7:用两个栈实现队列和用两个队列实现栈
- 面试题7:用两个栈实现队列和用两个队列实现一个栈
- 面试题7:用两个栈实现队列+用两个队列实现栈
- 剑指Offer面试题7用两个栈实现队列(附带用两个队列实现栈)
- 使用两个队列实现栈
- 使用两个栈实现队列
- 使用两个栈实现队列
- 使用两个栈实现队列
- 剑指offer-->面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7:用两个队列实现栈
- 面试题7 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 面试题7:用两个栈实现队列
- 面试题7-用两个栈实现队列
- shell变量
- 【七】重载与覆盖,多态的原理,接口
- SSD论文策略理解
- 51nod 1347 旋转字符串
- 全面解读HTTP Cookie
- 试题7:用两个栈实现队列+使用两个队列实现栈
- PHP内核探索之变量(1)Zval(自己看过不错儿)
- Ptyhon可视化:chapter3--绘制并定制化图表
- 记录一下平时遇到的小问题
- c++重要知识点---模板、重载输入或输出运算符的运用
- React update插件中 splice指令的理解
- Android (争取做到)最全的底部导航栏实现方法
- 【微信】Java 微信扫码支付(模式二)
- 倒序数