剑指offer面试题7:用两个栈实现队列(Java实现)
来源:互联网 发布:leancloud mysql 编辑:程序博客网 时间:2024/06/11 16:56
题目:
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和队列头部删除节点的功能
import java.util.*;public class Queue1{ private Stack<String> a;//插入栈 private Stack<String> b;//删除栈 public static void main(String[] args) { Queue1 queue = new Queue1(); queue.appendTail("a"); queue.appendTail("b"); queue.appendTail("c"); queue.appendTail("d"); queue.appendTail("e"); while (!queue.isEmpty()) { System.out.println(queue.deleteHead()); } } public Queue1(){ a = new Stack<String>(); b = new Stack<String>(); } public void appendTail(String string){ a.push(string); } public String deleteHead() { if (b.isEmpty()) { while (!a.isEmpty()){ b.push(a.pop()); } } return b.pop(); } public boolean isEmpty() { return b.isEmpty() && a.isEmpty(); } }拓展:
用两个队列实现堆栈
注意:Queue只是一个接口,不能实例化。以下代码用LinkedList实现
import java.util.*;public class QueueToStack {private Queue<String> q1=new LinkedList<String>();private Queue<String> q2=new LinkedList<String>();public static void main(String[] args) {QueueToStack qs=new QueueToStack();qs.push("as");qs.push("fd");qs.push("hg");qs.push("w");qs.push("jg");while(!qs.isEmpty())System.out.println(qs.pop());}public void push(String s){if(q1.isEmpty()){q1.offer(s);while(!q2.isEmpty())q1.offer(q2.poll());}else{q2.offer(s);while(!q1.isEmpty())q2.offer(q1.poll());}}public String pop(){if(q1.isEmpty())return q2.remove();return q1.remove();}public boolean isEmpty(){return q1.isEmpty()&&q2.isEmpty();}}
0 0
- 剑指Offer:面试题7——用两个栈实现队列(java实现)
- 剑指offer面试题7(java实现):用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列(Java实现)
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 剑指offer-->面试题7 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 《剑指Offer》面试题7:用两个栈实现队列
- 【剑指offer】 面试题7: 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer-面试题7:用两个栈实现队列
- 剑指offer---面试题7 用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 剑指Offer面试题7用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 剑指offer--面试题7: 用两个栈实现队列
- 对称矩阵的压缩存储
- 牛客:剑指offer:数字在排序数组中出现的次数 (Java)
- 解决友盟分享的报错的利器——debug模式
- 【原创】【NOIP1999】拦截导弹
- Wildfly配置PostgreSQL数据源
- 剑指offer面试题7:用两个栈实现队列(Java实现)
- CCF编译出错
- <STL>模拟实现Vector
- 欢迎使用CSDN-markdown编辑器
- 正则表达式的基本知识
- 【寒江雪】密码编码学与网络完全前言
- Remove Nth Node From End of List
- 28.索引优化
- Java多线程编程学习笔记 synchronized的理解 原子操作 actomic compareAndSet