比如我要去实现一个1 2 3 4 5 6 通过两个队列去输出6 5 4 3 2 1.
思想:
一.数组翻转的思想。
二.每次都在空的一端插入,插入完把旧队列反转过来,以此循环
三.使用链表数组来表示队列,可以不用考虑初始化长度。
刚开始插入1.

1

插入2

1 2

插入3

3 2 1

插入4

1 2 3 4

插入5

5 4 3 2 1

插入6

1 2 3 4 5 6
import java.util.LinkedList;/**
* @author zhangrichao
* @version 创建时间:2019年1月23日 下午4:01:49
* 用两个队列实现一个栈
*/
public class QueueToStack {LinkedList<Integer> queueA=new LinkedList<Integer>();  LinkedList<Integer> queueB=new LinkedList<Integer>();  //模仿栈的入栈操作public void push(int value)  {  if(queueA.isEmpty()&&queueB.isEmpty()){queueA.addLast(value);}else if(queueA.isEmpty()&&!queueB.isEmpty()){queueA.addLast(value);transfer();}else if(queueB.isEmpty()&&!queueA.isEmpty()){queueB.addLast(value);transfer();}}  //模仿栈的出栈操作  必须是非空的栈才能出栈啊  public int pop(){  if(queueA.isEmpty()&&!queueB.isEmpty()){return queueB.removeFirst();}else if(queueB.isEmpty()&&!queueA.isEmpty()){return queueA.removeFirst();}else{return 0;}}  //将旧队列反转放在插入头元素的位置上public void transfer(){  //因为默认从队列A插入。所以后面第二个数插入队列B时。要默认B为优先条件,毕竟两个队列的尺寸都为1if(queueB.size()==1&&!queueA.isEmpty()){while(!queueA.isEmpty()){int element=queueA.removeFirst();queueB.addLast(element);}}if(queueA.size()==1&&!queueB.isEmpty()){while(!queueB.isEmpty()){int element=queueB.removeFirst();queueA.addLast(element);}}}  public static void main(String[] args)  {  QueueToStack stack=new QueueToStack();  stack.push(1);  stack.push(2);  stack.push(3);  stack.push(4);  System.out.println(stack.pop());  System.out.println(stack.pop());  stack.push(5);  stack.push(6);  System.out.println(stack.pop());  System.out.println(stack.pop());  System.out.println(stack.pop());  System.out.println(stack.pop());  System.out.println(stack.pop()); }
}

Java 用两个队列实现一个栈相关推荐

  1. java实现-两个栈实现一个队列和两个队列实现一个栈

    1.两个栈实现一个队列 思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出:为空则将stack1中的元素取出压入 stack2中再弹出. 代码: import ...

  2. java 栈和队列实现迷宫代码_使用两个队列实现一个栈

    两个队列实现一个栈 栈的特点是后进先出,队列的特点是先进先出.使用两个队列模拟栈,实现栈的push,pop,top,empty 操作. 假设队列中均为数字,其中队列q1为操作队列,q2为辅助队列. p ...

  3. 两个栈实现一个队列,两个队列实现一个栈

    题目:用两个栈实现一个队列,用两个队列实现一个栈. 首先要了解栈和队列这两种数据结构各自的特点,栈是一种后入先出(Last In First Out,LIFO)的数据结构,队列是一种先进先出(Firs ...

  4. 两个栈实现一个队列/两个队列实现一个栈

    http://blog.csdn.net/sinat_30472685/article/details/70157227 1两个栈实现一个队列 1.原理分析: 队列的主要操作有两个:入队操作和出队操作 ...

  5. python ——两个队列实现一个栈两个栈实现一个队列

    1.两个队列实现一个栈 进栈:元素入队列A 出栈:判断如果队列A只有一个元素,则直接出队.否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队.为了下一次继续操作,互换队A和队B. p ...

  6. 两个栈实现一个队列与两个队列实现一个栈

    http://blog.csdn.net/z84616995z/article/details/19204529 两个栈实现一个队列: 原理方法:用一个栈为主栈,一个栈为辅助栈存放临时元素. 入队:将 ...

  7. 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?

    1.栈和队列分析 栈是一种特殊的线性表.其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行 队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的 ...

  8. C/C++面试题—使用STL两个队列实现一个栈

    题目介绍 使用STL中的两个队列实现一个栈,实现栈的top.pop.push.clear等操作. 思路分析 思路和使用2个栈实现一个队列是相通的,用一个队列queue1容器用来 压栈,出栈的时候判断q ...

  9. 【c语言】两个队列实现一个栈

    两个队列实现一个栈 核心思想:模拟出栈的后进先出操作 创建queue1和queue2,入栈时选择一个非空队列执行入队列操作(若两个队列都为空,则随机选择一个队列),出栈时需要先从非空队列queue1把 ...

  10. 【C++】两个队列实现一个栈

    两个队列实现一个栈的思想:用_PushQ1队列作为push数据的队列,用_TmpQ2队列暂存数据 1.只要是对栈进行push操作,就将数据push入_PushQ1队列中. 2.要实现栈的pop操作,就 ...

最新文章

  1. 4 种主流的 API 架构风格对比
  2. 【一通百通】Bash的单双括号建议:多用[[]], 少用[]
  3. python怎么安装第三方库-怎样安装Python的第三方库
  4. Jayway JsonPath实例
  5. 15天内数据迁移!广东省能源局发布通知,这类数据中心面临停工风险!
  6. NODE_PATH的疑难杂症(转)
  7. Java代码简化之lombok
  8. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案(一)
  9. C# WinForm 中Label自动换行 解决方法
  10. JDK源码解析之java.util.ListIterator
  11. 中国区块链开发者的热血时代来临!
  12. c# AD域 权限管理
  13. 少模光纤模式场的计算
  14. 如何在微图中提取生成等高线
  15. Oracle数据库启动与关闭
  16. JS常用运算符及其优先级
  17. 如何修改非root用户的ulimit -n的值
  18. karaf常用命令纪录
  19. 仿射密码 python实现
  20. html 如何设置选择图片,html中如何设置默认图片?

热门文章

  1. 几款开源聊天软件对比
  2. 抢红包案例分析以及代码实现(一) 侵立删
  3. 您电脑的网络管家 -NetSetMan
  4. 微信的9个隐藏功能,我不允许还有人不知道!
  5. 高斯滤波(Gauss filtering)
  6. 单线程模型中Message、Handler、Message Queue、Looper之间的关系
  7. 阿里云Linux安装软件镜像源
  8. PCA+SVM进行人脸识别(ORL人脸数据集分类)
  9. C语言程序设计--教师信息管理系统
  10. CactiEZ安装与配置-监控网卡流量