双栈实现队列算法:

分别考虑队列两种操作入队和出队,我们假设使用栈s1 s2,

s1用来模拟入队,s2用来模拟出队

入队:

入队操作直接执行s1.push即可

出队:

代码实现

 package hello;
import java.util.*; public class TwoStackOneQueue<E> {
private Stack<E> s1 = new Stack<>();
private Stack<E> s2 = new Stack<>(); public void enqueue(E item){
s1.push(item);
} public E dequeue(){
if (s2.empty()){
if(s1.empty()){
throw new ArrayIndexOutOfBoundsException();
}else{
popS1ToS2();
return s2.pop();
}
}else{
return s2.pop();
}
} private void popS1ToS2(){
while(!s1.empty()){
s2.push(s1.pop());
}
} public static void main(String[] args){
TwoStackOneQueue<Integer> tsoq = new TwoStackOneQueue<>();
for (int i = 0; i < 20; i++){
tsoq.enqueue(i);
}
for (int i = 0; i < 10; i++) {
System.out.println(tsoq.dequeue());
}
for (int i = 20; i < 40; i++){
tsoq.enqueue(i);
}
for (int i = 0; i < 30; i++) {
System.out.println(tsoq.dequeue());
}
}
}

最新文章

  1. Java/C++之 public、protected、private ; virtual &amp; abstract
  2. Java 内存分配全面浅析
  3. hihocode 1077 : RMQ问题再临-线段树
  4. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
  5. ArcGIS知乎上有哪些干货可以推荐?
  6. python多进程共享变量Value使用tips
  7. 关于NSArray的几种排序:
  8. Linux Shell 函数返回值
  9. How To Ask Questions The Smart Way 转
  10. 第二章 《C++ Primer Plus》
  11. MongoDB数据库基本命令
  12. Java框架之Spring(一)
  13. wordpress升级出错
  14. USB组合设备 Interface Association Descriptor (IAD)
  15. 微信 js api[转]
  16. yii CFormModel中的rules验证机制
  17. 关于 Vue 方法前面的美元符号
  18. 【转】如何在ASP.NET 2.0中定制Expression Builders
  19. 车道线识别/Opencv/传统方法
  20. ROS学习

热门文章

  1. 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
  2. 洛谷p1967货车运输(kruskal重构树)
  3. openjudge1.2
  4. SAS 分层抽样示例代码
  5. windows 10环境下安装Tensorflow-gpu
  6. Exit 与 Goto :eof 在批处理中的区别【转】
  7. 【Eclipse】Eclipse如何导出java项目为jar包
  8. sql server 利用存储过程http请求调用URL链接访问方法
  9. SDN实验---Mininet实验(玩转流表)
  10. python初级(302) 7 列表