1.两个栈实现一个队列

  • 思路:压入元素直接入stack1,删除元素先判断stack2中是否为空,如果不为空直接弹出;为空则将stack1中的元素取出压入 stack2中再弹出。
  • 代码:
import java.util.Stack;public class TwoStackToQueue {private Stack stack1 = new Stack();private Stack stack2 = new Stack();public void add(Integer n){stack1.push(n);}public Integer poll(){if(stack1.isEmpty()&&stack2.isEmpty()){return null;}if(stack2.isEmpty()){while(!stack1.isEmpty()){stack2.push(stack1.pop());}}return (Integer)stack2.pop();}public boolean isEmpty(){if(stack1.isEmpty()&&stack2.isEmpty()){return true;}else{return false;}}
}
复制代码

2.两个队列实现一个栈

  • 思路:要用队列(先进先出)实现栈(先进后出),则是要获取deque1队尾的元素,所以可以把前n-1个元素压入空队列deque2中,弹出deque1剩余的一个队尾元素。
  • 代码:
import java.util.ArrayDeque;
import java.util.Deque;public class TwoQueueToStack {private Deque<Integer> deque1;private Deque<Integer> deque2;public TwoQueueToStack(){deque1 = new ArrayDeque<>();deque2 = new ArrayDeque<>();}public void  push(Integer n){if(deque2.isEmpty()){deque1.offer(n);}else {deque2.offer(n);}}public Integer pop(){if(deque1.isEmpty()&&deque2.isEmpty()){return null;}if(deque1.isEmpty()&&!deque2.isEmpty()){while (deque2.size()>0){deque1.add(deque2.poll());}}while (deque1.size()>1){deque2.add(deque1.poll());}return deque1.poll();}public boolean isEmpty(){if(deque1.isEmpty()&&deque2.isEmpty()){return true;}else{return false;}}
}
复制代码

转载于:https://juejin.im/post/5b97612ae51d450e6057fd0e

java实现-两个栈实现一个队列和两个队列实现一个栈相关推荐

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

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

  2. java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...

    在 thinking in java中看到过说Stack类继承于Vector,而这两个类都不推荐使用了,但是在做一到OJ题时,我用LinkedList来模拟栈和直接用Stack,发现在进行入栈出栈操作 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. Java判断一个序列是否可由给定序列通过栈操作获得(ABCDEF)

    Java栈操作中的代码题目你是否已经掌握了呢?接下来上题目叭~~~ 判断一个序列是否可由给定序列通过栈操作获得(ABCDEF) 这是基础题噢 学不会就打你pp呜呜呜~ 还是那句话,原创禁止转载侵权必究 ...

最新文章

  1. 多视图立体匹配论文分享 | Fast-MVSNet (CVPR2020)
  2. js中bind、call、apply函数的用法
  3. HttpClient4.5.2调用示例(转载+原创)
  4. 让互联网助小组合作一臂之力
  5. 需求管理与分析——需求池
  6. 二叉树的前序、中序、后序遍历及互相求法
  7. 程序员摆脱疲劳的 11 个建议
  8. jquery ajax 向spring MVC controller中传值并接受及解析返回值
  9. jmeter录制脚本(针对谷歌)
  10. Java 二分排序法
  11. roboware studio教程_Roboware Studio 简单使用与调试(ROS kinetic)
  12. php市场调查问卷模板,市场调查问卷范文
  13. 在 vue 中基于 tinymce 封装的一个富文本编辑器组件
  14. HDU5956 The Elder(树上斜率DP)
  15. 安卓市场的“安全评估报告”攻略
  16. Jquery获取选中复选框的值(checkBox)
  17. refactoring的思考
  18. 新唐51单片机----挖坑
  19. 卷积神经网络实例Python(VGG)
  20. 【BI学习笔记】在Linux上安装Wyn Enterprise商业智能报表服务器

热门文章

  1. android tcp socket框架_最流行的 Web 框架 Gin 源码阅读
  2. Jmeter之断言操作
  3. mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法
  4. java一次查询900w数据_一次SQL查询优化原理分析(900W+数据,从17s到300ms)
  5. layui如何获取父节点的父节点_layui框架中layer父子页面交互的方法分析
  6. nginx 反向代理跨域访问配置_nginx反向代理配置去除前缀
  7. python3编码命名规范_Python代码规范和命名规范
  8. curl php 百度,phpcurl模拟登录百度首页
  9. python getattr函数_[转]Python中的getattr()函数详解
  10. Python之web开发(六):python使用django框架搭建网站之图表显示操作