博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CLRS10.1-7练习 - 用双队列实现栈
阅读量:4514 次
发布时间:2019-06-08

本文共 1831 字,大约阅读时间需要 6 分钟。

算法中心思想:

始终向非空队列进行入队操作

初始化时两个队列都为空,我们对q1进行入队操作

 

入栈:

只需执行其中一个队列入队操作即可,

具体操作哪一个队列,用一个标记变量标记 

出栈流程图

 

代码实现

1 package hello; 2 import java.util.*; 3  4 public class TwoQueueOneStack
{ 5 private Queue
q1 = new LinkedList<>(); 6 private Queue
q2 = new LinkedList<>(); 7 private String pushFlag = "q1"; 8 9 public void push(E item){10 if(pushFlag == "q1"){11 q1.add(item);12 }13 if(pushFlag == "q2"){14 q2.add(item);15 }16 }17 18 public E pop(){19 E top;20 if(!empty()){21 if(!q1.isEmpty()) {22 top = move(q1, q2);23 this.pushFlag = "q2";24 } else {25 top = move(q2, q1);26 this.pushFlag = "q1";27 }28 }else{29 throw new ArrayIndexOutOfBoundsException();30 }31 return top;32 }33 34 private E move(Queue
qSource, Queue
qTarget){35 Iterator
it = qSource.iterator();36 while(it.hasNext()){37 E item = it.next();38 if(it.hasNext()){39 qTarget.add(item);40 }else{41 qSource.clear();42 return item;43 }44 }45 46 throw new ArrayIndexOutOfBoundsException();47 }48 49 public boolean empty(){50 if (q1.isEmpty() && q2.isEmpty())51 return true;52 else53 return false;54 }55 56 public static void main(String[] args){57 TwoQueueOneStack
tqos = new TwoQueueOneStack<>();58 for (int i = 0; i < 20; i++) {59 tqos.push(i);60 }61 for (int i = 0; i < 10; i++){62 System.out.println(tqos.pop());63 }64 for (int i = 20; i < 40; i++){65 tqos.push(i);66 }67 for (int i = 0; i < 30; i++){68 System.out.println(tqos.pop());69 }70 }71 72 }

 

转载于:https://www.cnblogs.com/dgzhangning/p/7651604.html

你可能感兴趣的文章
FreeMarker初探--安装FreeMarker
查看>>
Eclipse git pull 报Nothing to fetch 异常原因
查看>>
Java中封装类型.valueOf()
查看>>
精品资源:40个实用的 PSD 贴纸模板《下篇》
查看>>
【面试题】BD
查看>>
【面试】链表反转
查看>>
素数距离问题_ny_24.java
查看>>
总结A*,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较
查看>>
报错An internal error occurred during: "reload maven project". java.lang.NullPointerException
查看>>
JSP中include指令和include动作的区别
查看>>
ios中创建控制器的几种方式
查看>>
MySQL中TEXT与BLOB字段类型的区别
查看>>
送给大家一个安卓版的easyradius短信提示客户端
查看>>
pat乙级1036-1040
查看>>
Pyhton开发:Python基础杂货铺
查看>>
Springboot 打jar包分离lib,配置文件正确方式
查看>>
剑指Offer_编程题_18
查看>>
剑指Offer_编程题_23
查看>>
我所理解的 Laravel 请求 生命周期
查看>>
数组的合并
查看>>