两个栈实现一个队列

import java.util.Stack;public class Demo07 {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();public void push(int node) {stack1.push(node);}public int pop() {if(stack2.size()<=0){while(stack1.size()>0){/*int data = stack1.peek();//查看栈顶元素,但不移除它stack1.pop();//弹出栈顶元素stack2.push(data);//压入*/                             stack2.push(stack1.pop());}}if(stack2.isEmpty()){try {throw new Exception("queue is empty.");} catch (Exception e) {}}/*** int head = stack2.peek();* stack2.pop();*/int head = stack2.pop();return head;}
}

两个队列实现一个栈

import java.util.ArrayDeque;
import java.util.Queue;public class Demo08 {Queue<Integer> queue1 = new ArrayDeque<>();Queue<Integer> queue2 = new ArrayDeque<>();public void push(int node) {//两个栈都为空时,优先考虑queue1if (queue1.isEmpty()&&queue2.isEmpty()) {queue1.add(node);return;}//如果queue1为空,queue2有元素,直接放入queue2if (queue1.isEmpty()) {queue2.add(node);return;}if (queue2.isEmpty()) {queue1.add(node);return;}}public int pop() {//两个栈都为空时,没有元素可以弹出if (queue1.isEmpty()&&queue2.isEmpty()) {try {throw new Exception("stack is empty");} catch (Exception e) {}}//如果queue1为空,queue2有元素, 将queue2的元素依次放入queue1中,直到最后一个元素,我们弹出。if (queue1.isEmpty()) {while (queue2.size()>1) {queue1.add(queue2.poll());}return queue2.poll();}if (queue2.isEmpty()) {while (queue1.size()>1) {queue2.add(queue1.poll());}return queue1.poll();}return (Integer) null;}public static void main(String[] args) {Demo08 demo08 = new Demo08();demo08.push(1);demo08.push(2);demo08.push(3);demo08.push(4);System.out.println(demo08.pop());System.out.println(demo08.pop());demo08.push(5);System.out.println(demo08.pop());System.out.println(demo08.pop());System.out.println(demo08.pop());}
}

两个栈实现一个队列以及两个队列实现一个栈(Java)相关推荐

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

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

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

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

  3. 栈与队列2——两个栈组成队列

    题目 编写一个类,用两个栈实现一个队列,并实现队列的基本操作(add,poll,peek) 思路 一个栈stackPush作为正常压入的栈,一个栈stackPop作为弹出的栈,将stackPush中的 ...

  4. 两个栈实现队列与两个队列实现栈

    1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的. 入队列,直接压到s1是就行了 出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素:再把s2的所有元素全部压回s1中 实 ...

  5. C#数据结构:两栈实现队列,两队列实现栈

    两个栈实现队列:栈实现先进先出 栈1负责队尾,栈2负责队头 每次入队,栈2无元素且栈1无元素,入栈2:否则入栈1 每次出队,栈2有元素,出栈2顶:否则把全部栈1入栈2,再出栈2顶 bool Pop(r ...

  6. 两顺序栈共享Java_数据结构与算法(三),栈与队列

    上一篇<数据结构与算法(二),线性表>中介绍了数据结构中线性表的两种不同实现--顺序表与链表.这一篇主要介绍线性表中比较特殊的两种数据结构--栈与队列.首先必须明确一点,栈和队列都是线性表 ...

  7. 一个数组实现两个栈(共享栈)

    题目:   一个数组实现两个栈. 方法1:   下标为0的位置为栈1的栈底,下标为1的位置为栈2的栈底,栈1的元素存放在下标为偶数的位置上,栈2的元素放在下标为奇数的位置上.   如上图所示的数组:若 ...

  8. 算法与数据结构题目的 PHP 实现:栈和队列 由两个栈组成的队列

    思路:同样使用 PHP 的数组模拟栈.栈的特点是先进后出,队列的特点是先进先出,可以用第一个栈(StackPush)作为压入栈,压入数据的时候只往这个栈中压入数据,第二个栈作(StackPop)为弹出 ...

  9. 栈顶指针和队尾指针指向当前位置和指向下一个位置的区别?——轻松搞懂栈和队列指针的指向问题

    我们先看一下队列的队尾指针指向队尾元素的当前位置的入队操作: 可以看到,当队尾指针指向的是队尾元素时,我想加入一个新的元素,这时直接放在队尾指向的位置是不可以的,因为这个位置已经有元素了,所以先要对队 ...

  10. 【学校实验】停车场问题:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

    停车场问题 问题描述 测试数据 基本要求 实现提示 代码实现 栈的实现 队列的实现 主函数的实现 问题描述 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆 ...

最新文章

  1. mac如何修改php.ini,mac 如何修改php.ini
  2. 网络设备中的交换机(Switch)是什么?—Vecloud微云
  3. dpi重启后会恢复_Linux 系统的备份恢复
  4. 干货回顾 | 泛娱乐社交 APP 出海的破与立
  5. VMware 提示”此虚拟机被配置为64位操作系统,然而,64位操作无法进行”
  6. JavaScript 和 Java 有关系吗?
  7. 第三方依赖关系的风险:利用数十个易受攻击的 NuGet包瞄准 .NET 平台
  8. SSH中常见jar包缺少错误
  9. 翻译:道路机动车辆驾驶自动化系统相关术语的分类和定义 J3016_202104
  10. 【数学建模】模糊综合评价模型
  11. vs2017 visual studio2017 密钥 激活码
  12. 软考中级软件设计师--6.UML
  13. rs232转485通信在串口助手只能发送数据而接受不到数据,求大神解答
  14. 唐宋边塞诗词中的古灵州
  15. iOS证书(p12)获取解密公私钥
  16. arnold ass standin 代理模型批量查询 与替换工具发布1.0
  17. 开源切片工具--TileStache
  18. 了解Panda3D引擎的配置变量
  19. 有道翻译 爬虫,分析反爬 附代码
  20. 关于builder模式的使用

热门文章

  1. .net C#实现图像对比
  2. 流程图中的实线_流程图符号_流程图中的带箭头的线段代表什么?
  3. Spring实战第五版(中文版)学习笔记-第一章 Spring起步
  4. 前装车载导航搭载率突破50%,谁在领跑背后的导航引擎
  5. 微信红包软件可测试,微信抢红包神器测试g2020
  6. 51单片机之逻辑运算指令ANL、ORL、XRL等
  7. 如何加载和保存TXT、CSV、DAT文本文件
  8. PDCA过程模式在信息安全管理体系的应用
  9. ASIO音频驱动开发指南
  10. SDR软件无线电知识要点(三)EVM