[算法]两个栈实现一个队列
必须做到以下两点:
1.如果stackPush要往stackPop中压数据,那么必须一次性把stackPush中的数据全部压入。
2.如果stackPop不为空,stackPush绝对不能向stackPop中压入数据。
package com.darrenchan;import java.util.Stack;/*** 必须做到以下两点:* 1.如果stackPush要往stackPop中压数据,那么必须一次性把stackPush中的数据全部压入。* 2.如果stackPop不为空,stackPush绝对不能向stackPop中压入数据。*/ public class TwoStackOneQueue {public static Stack<Integer> stackPush;public static Stack<Integer> stackPop;public TwoStackOneQueue(Stack<Integer> stackPush, Stack<Integer> stackPop) {this.stackPush = stackPush;this.stackPop = stackPop;}public static void add(int value){stackPush.push(value);}public static int poll(){if(stackPush.isEmpty() && stackPop.isEmpty()){throw new RuntimeException("Queue is empty!");}else if(stackPop.isEmpty()){while(!stackPush.isEmpty()){stackPop.push(stackPush.pop());}}return stackPop.pop();}public static int peek(){if(stackPush.isEmpty() && stackPop.isEmpty()){throw new RuntimeException("Queue is empty!");}else if(stackPop.isEmpty()){while(!stackPush.isEmpty()){stackPop.push(stackPush.pop());}}return stackPop.peek();}public static void main(String[] args) {TwoStackOneQueue queue = new TwoStackOneQueue(new Stack<Integer>(), new Stack<Integer>());queue.add(1);queue.add(2);queue.add(3);System.out.println(queue.poll());System.out.println(queue.peek());System.out.println(queue.peek());} }
转载于:https://www.cnblogs.com/DarrenChan/p/9536400.html
[算法]两个栈实现一个队列相关推荐
- 每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路
用两个栈实现一个队列的功能?要求给出算法和思路. 设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空: (2)如果不为空,则将栈B中最顶元素pop出: ...
- 算法图解:如何用两个栈实现一个队列?
作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 https://github.com/vipstone/algori ...
- java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?
本文已收录至 https://github.com/vipstone/algorithm <算法图解>系列. 队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(<队列> ...
- 【算法百题之五】利用两个栈实现一个队列
[算法百题之五]利用两个栈实现一个队列 大家好,我是Lampard~~ 很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙! ...
- 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...
- 包含min函数的栈和两个栈实现一个队列
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). 分析:这是google的一道面试题. 看到这道题目时,第一反应就是每 ...
- 由两个栈组成一个队列
使用C++完成<程序员代码面试指南 IT名企算法与数据结构题目> 题目 编写一个类,用两个栈实现队列,支持队列操作: - push:入队 - pop:出队(不返回值) - front:返回 ...
- 【剑指offer】用两个栈实现一个队列
题目:两个栈实现一个队列. 栈的特点:先进后出,队列的特点是先进先出 思路:stack1放入数据:pop时,先判断stack2是否为空,如果不为空,直接pop,如果空,则push(stack1.pop ...
- 剑指offer五:两个栈实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. package com.jianzhioffer;import java.util.Stack;publ ...
最新文章
- c++ 获取线程id_高效获取当前线程的 id
- Java提高学习之Object(3)
- URL不能过长,否则summit方法提交失败
- 晶振封装与频率对照表
- python实现列表元素互异
- JAVA_HOME is not defined correctly
- 前字节程序员感叹“字节范”就是工作上不设边界,待遇上延迟满足。
- 1、	利用AUTO CAD脚本写一个插件,可以读取CAD中的图形公式,并输出为一个Excel计算表格...
- 数据挖掘实践 —— OneR 分类算法
- Building Worlds In Unreal 学习笔记——07-11 岩石树落木灌木绘制/溪水着色器/潮湿与焦散贴花/后处理
- IC圈的世界杯 | 论芯片设计的胜利十一人
- 微信PC版重磅更新!2个困扰多年的大麻烦,这次终于解决了
- Non-local的一些理解
- MathType可以和哪些Microsoft Office版本一起使用?
- 影响线型缩聚物分子量的因素_线型缩聚物的分子量与分子量分布.ppt
- 什么是“Ground truth”
- 泉州php编程学校,泉州五中校园网络平台【Moodle平台与校园网络整合】...
- 面向对象编程的正确姿势
- 山东大学计算机考博难度,我的四个考博面试经历:人大,山大,华科,华理工...
- WinSCP使用教程
热门文章
- c语言求数组中绝对值最小值,(C语言)简单的绝对值排序
- linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
- 系统地址和服务器地址不一致,在打开远程通服务配置程序时检测系统配置时提示配置失败,映射的ip地址与服务器不一致。...
- nginx ngx_http_proxy_module(反向代理)
- TensorFlow tf.keras.losses.CategoricalCrossentropy
- Java JDBC Druid
- 2.18 logistic 损失函数的解释
- requests与bs4编码
- nms python代码_?标检测中的?极?值抑制算法(nms):python代码解析
- Exchange Server 2016 独立部署/共存部署 (一)—— 前期准备