java实现-两个栈实现一个队列和两个队列实现一个栈
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实现-两个栈实现一个队列和两个队列实现一个栈相关推荐
- 两个栈实现一个队列,两个队列实现一个栈
题目:用两个栈实现一个队列,用两个队列实现一个栈. 首先要了解栈和队列这两种数据结构各自的特点,栈是一种后入先出(Last In First Out,LIFO)的数据结构,队列是一种先进先出(Firs ...
- java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...
在 thinking in java中看到过说Stack类继承于Vector,而这两个类都不推荐使用了,但是在做一到OJ题时,我用LinkedList来模拟栈和直接用Stack,发现在进行入栈出栈操作 ...
- 两个栈实现一个队列与两个队列实现一个栈
http://blog.csdn.net/z84616995z/article/details/19204529 两个栈实现一个队列: 原理方法:用一个栈为主栈,一个栈为辅助栈存放临时元素. 入队:将 ...
- 【学校实验】停车场问题:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
停车场问题 问题描述 测试数据 基本要求 实现提示 代码实现 栈的实现 队列的实现 主函数的实现 问题描述 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆 ...
- 两顺序栈共享Java_数据结构与算法(三),栈与队列
上一篇<数据结构与算法(二),线性表>中介绍了数据结构中线性表的两种不同实现--顺序表与链表.这一篇主要介绍线性表中比较特殊的两种数据结构--栈与队列.首先必须明确一点,栈和队列都是线性表 ...
- 栈与队列2——两个栈组成队列
题目 编写一个类,用两个栈实现一个队列,并实现队列的基本操作(add,poll,peek) 思路 一个栈stackPush作为正常压入的栈,一个栈stackPop作为弹出的栈,将stackPush中的 ...
- 两个栈实现队列与两个队列实现栈
1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的. 入队列,直接压到s1是就行了 出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素:再把s2的所有元素全部压回s1中 实 ...
- C#数据结构:两栈实现队列,两队列实现栈
两个栈实现队列:栈实现先进先出 栈1负责队尾,栈2负责队头 每次入队,栈2无元素且栈1无元素,入栈2:否则入栈1 每次出队,栈2有元素,出栈2顶:否则把全部栈1入栈2,再出栈2顶 bool Pop(r ...
- 栈顶指针和队尾指针指向当前位置和指向下一个位置的区别?——轻松搞懂栈和队列指针的指向问题
我们先看一下队列的队尾指针指向队尾元素的当前位置的入队操作: 可以看到,当队尾指针指向的是队尾元素时,我想加入一个新的元素,这时直接放在队尾指向的位置是不可以的,因为这个位置已经有元素了,所以先要对队 ...
- Java判断一个序列是否可由给定序列通过栈操作获得(ABCDEF)
Java栈操作中的代码题目你是否已经掌握了呢?接下来上题目叭~~~ 判断一个序列是否可由给定序列通过栈操作获得(ABCDEF) 这是基础题噢 学不会就打你pp呜呜呜~ 还是那句话,原创禁止转载侵权必究 ...
最新文章
- 多视图立体匹配论文分享 | Fast-MVSNet (CVPR2020)
- js中bind、call、apply函数的用法
- HttpClient4.5.2调用示例(转载+原创)
- 让互联网助小组合作一臂之力
- 需求管理与分析——需求池
- 二叉树的前序、中序、后序遍历及互相求法
- 程序员摆脱疲劳的 11 个建议
- jquery ajax 向spring MVC controller中传值并接受及解析返回值
- jmeter录制脚本(针对谷歌)
- Java 二分排序法
- roboware studio教程_Roboware Studio 简单使用与调试(ROS kinetic)
- php市场调查问卷模板,市场调查问卷范文
- 在 vue 中基于 tinymce 封装的一个富文本编辑器组件
- HDU5956 The Elder(树上斜率DP)
- 安卓市场的“安全评估报告”攻略
- Jquery获取选中复选框的值(checkBox)
- refactoring的思考
- 新唐51单片机----挖坑
- 卷积神经网络实例Python(VGG)
- 【BI学习笔记】在Linux上安装Wyn Enterprise商业智能报表服务器
热门文章
- android tcp socket框架_最流行的 Web 框架 Gin 源码阅读
- Jmeter之断言操作
- mysql 1366 hy000_ERROR 1366 (HY000): Incorrect string value错误解决办法
- java一次查询900w数据_一次SQL查询优化原理分析(900W+数据,从17s到300ms)
- layui如何获取父节点的父节点_layui框架中layer父子页面交互的方法分析
- nginx 反向代理跨域访问配置_nginx反向代理配置去除前缀
- python3编码命名规范_Python代码规范和命名规范
- curl php 百度,phpcurl模拟登录百度首页
- python getattr函数_[转]Python中的getattr()函数详解
- Python之web开发(六):python使用django框架搭建网站之图表显示操作