JAVA描述两个队列实现栈
来源:互联网 发布:科技成果登记软件 编辑:程序博客网 时间:2024/05/20 21:19
工作室的小伙伴面试,被问到了两个栈实现一个队列的问题。
主要思想就是借助栈先进后出的特点,再加上两个栈提供的空间优势,将一个栈中的数据压到另一个栈中,此时最先进入的元素,也就是栈A1中栈底(bottom)的元素,变成了栈A2栈顶(top)元素,实现了队列先进先出的特性。
根据这个特性,我想到能不能像武侠小说里那样,好的思想(武功),倒着打也是很厉害的(详情见倚天屠龙记中六大派围攻光明顶,张无忌与少林方丈的一战描述~)
思想都是差不多的,两个队列实现栈的先进后出。
这里直接用JAVA提供的集合LinkedList,用函数AddLast与removefirst来模拟队列先进先出。
代码如下:
package Q07;
/**
* Created by Administrator on 2016/11/7.
*/
import java.util.LinkedList;
public class StackWithTwoQuenes {
//利用两个LinkedList链表模拟队列的先进先出private LinkedList<String> queue1=new LinkedList<>() ;private LinkedList<String> queue2=new LinkedList<>() ;//队列中数据出来public String pop(){ String re =null; if(queue1.size()==0&&queue2.size()==0) { return null; } if(queue2.size()==0){ while(queue1.size()>0){ re=queue1.removeFirst(); if(queue1.size() != 0) queue2.addLast(re); } } else if(queue1.size()==0){ while(queue2.size()>0){ re=queue2.removeFirst(); if(queue2.size() != 0) queue1.addLast(re); } } return re;}public void push(String a){ if(queue1.size()==0&&queue2.size()==0) { queue1.addLast(a); } else if(queue1.size()>0&&queue2.size()==0){ queue1.addLast(a); } else if(queue2.size()>0&&queue1.size()==0){ queue2.addLast(a); }}public static void main(String [] args){ StackWithTwoQuenes a=new StackWithTwoQuenes(); String b; a.push("a"); b=a.pop(); System.out.println(b); a.push("b"); b=a.pop(); System.out.println(b); a.push("c"); a.push("d"); b=a.pop(); System.out.println(b); b=a.pop(); System.out.println(b); b=a.pop(); System.out.println(b);}
}
0 0
- JAVA描述两个队列实现栈
- java两个栈实现队列
- 两个栈实现队列+两个队列实现栈----java
- Java 两个栈实现队列和两个队列实现栈
- 用两个栈实现队列java实现
- 数据结构与算法分析(Java 语言描述)(35)—— 使用两个栈实现一个队列
- 数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈
- java 两个栈实现队列与两个列实现栈
- (java)两个队列实现栈的操作
- 两个栈实现队列(Java)
- java 用两个栈实现队列
- Java通过两个栈实现队列
- java用两个队列实现栈
- 两个栈实现一个队列(java)
- java 使用两个栈实现队列
- Java两个栈来实现一个队列
- java两个栈实现一个队列
- Java:如何利用两个栈实现队列
- LightOJ-1062-bindary search
- 熟悉vi的基本操作
- 51nod-【1276 岛屿的数量】
- 轻度解析异步~Task.Delay
- Java多线程之~~~~使用wait和notify实现生产者消费者模型
- JAVA描述两个队列实现栈
- 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】
- 移动端冒泡的touch 事件挡也挡不住
- Linux下最完整的Samba服务器配置攻略
- 用Python写网络爬虫-学习总结
- 蔡勒公式的推导过程
- 搭建基于HTTPS的iOS发布环境
- 关于依赖注入
- 洛谷 P1346 电车