必须做到以下两点:
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

[算法]两个栈实现一个队列相关推荐

  1. 每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路

    用两个栈实现一个队列的功能?要求给出算法和思路. 设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空: (2)如果不为空,则将栈B中最顶元素pop出: ...

  2. 算法图解:如何用两个栈实现一个队列?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 本文已收录至 https://github.com/vipstone/algori ...

  3. java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?

    本文已收录至 https://github.com/vipstone/algorithm <算法图解>系列. 队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(<队列> ...

  4. 【算法百题之五】利用两个栈实现一个队列

         [算法百题之五]利用两个栈实现一个队列        大家好,我是Lampard~~        很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙!         ...

  5. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...

    多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...

  6. 包含min函数的栈和两个栈实现一个队列

    题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素.要求函数min.push以及pop的时间复杂度都是O(1). 分析:这是google的一道面试题. 看到这道题目时,第一反应就是每 ...

  7. 由两个栈组成一个队列

    使用C++完成<程序员代码面试指南 IT名企算法与数据结构题目> 题目 编写一个类,用两个栈实现队列,支持队列操作: - push:入队 - pop:出队(不返回值) - front:返回 ...

  8. 【剑指offer】用两个栈实现一个队列

    题目:两个栈实现一个队列. 栈的特点:先进后出,队列的特点是先进先出 思路:stack1放入数据:pop时,先判断stack2是否为空,如果不为空,直接pop,如果空,则push(stack1.pop ...

  9. 剑指offer五:两个栈实现一个队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. package com.jianzhioffer;import java.util.Stack;publ ...

最新文章

  1. c++ 获取线程id_高效获取当前线程的 id
  2. Java提高学习之Object(3)
  3. URL不能过长,否则summit方法提交失败
  4. 晶振封装与频率对照表
  5. python实现列表元素互异
  6. JAVA_HOME is not defined correctly
  7. 前字节程序员感叹“字节范”就是工作上不设边界,待遇上延迟满足。
  8. 1、 利用AUTO CAD脚本写一个插件,可以读取CAD中的图形公式,并输出为一个Excel计算表格...
  9. 数据挖掘实践 —— OneR 分类算法
  10. Building Worlds In Unreal 学习笔记——07-11 岩石树落木灌木绘制/溪水着色器/潮湿与焦散贴花/后处理
  11. IC圈的世界杯 | 论芯片设计的胜利十一人
  12. 微信PC版重磅更新!2个困扰多年的大麻烦,这次终于解决了
  13. Non-local的一些理解
  14. MathType可以和哪些Microsoft Office版本一起使用?
  15. 影响线型缩聚物分子量的因素_线型缩聚物的分子量与分子量分布.ppt
  16. 什么是“Ground truth”
  17. 泉州php编程学校,泉州五中校园网络平台【Moodle平台与校园网络整合】...
  18. 面向对象编程的正确姿势
  19. 山东大学计算机考博难度,我的四个考博面试经历:人大,山大,华科,华理工...
  20. WinSCP使用教程

热门文章

  1. c语言求数组中绝对值最小值,(C语言)简单的绝对值排序
  2. linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
  3. 系统地址和服务器地址不一致,在打开远程通服务配置程序时检测系统配置时提示配置失败,映射的ip地址与服务器不一致。...
  4. nginx ngx_http_proxy_module(反向代理)
  5. TensorFlow tf.keras.losses.CategoricalCrossentropy
  6. Java JDBC Druid
  7. 2.18 logistic 损失函数的解释
  8. requests与bs4编码
  9. nms python代码_?标检测中的?极?值抑制算法(nms):python代码解析
  10. Exchange Server 2016 独立部署/共存部署 (一)—— 前期准备