题目

用两个队列模拟实现栈的操作原题链接

思路

我是用两个list模拟的,没有用java的queue,下次用queue。
思想就是:元素进入一个list1,当list1中元素多余1个时,将list1的末尾元素放进list2,然后再将list1其余元素从头至尾的进入list2,这样后进的元素就在第一个位置了,再将list2赋给list1,清空lisr2,方便下次有元素再进行操作。

代码

class MyStack {List<Integer> queue1;List<Integer> queue2;public MyStack() {queue1 = new ArrayList<>();queue2 = new ArrayList<>();}public void push(int x) {queue1.add(x);if(queue1.size() > 1) {queue2.add(queue1.get(queue1.size() - 1));for(int i = 0; i < queue1.size() - 1; i++) {queue2.add(queue1.get(i));}queue1 = queue2;queue2 = new ArrayList<>();//queue2.clear();这样写,会在下面下面的 return queue1.get(0); 中报错下标越界}}public int top() {return queue1.get(0);}public int pop() {int peak = queue1.get(0);queue1.remove(0);return peak;}public boolean empty() {return queue1.isEmpty();}
}

总结

这个方法虽然实现了,但是空间复杂度比较高,因为每次都会new一个新的ArrayList,我本想用 clear() 方法情况queue2,但是会导致下面的top方法报错,目前不太清楚什么原因,以后解决了再来补上。

【两个队列模拟栈】——栈与队列相关推荐

  1. 用队列实现栈--用两个队列模拟实现栈

    出栈:哪个队列不为空,将该队列中前n-1个元素挪到另一个空队列中,然后将该队列中仅剩的元素出队列. 入栈:哪个队列不为空,将元素放到哪个队列中即可. 获取栈顶元素:哪个队列不为空,该队列的队尾就是栈顶 ...

  2. 用两个队列模拟实现一个栈的过程

    栈具有"后进先出"的特点,即某个元素最后进入栈,却最先出栈:队列具有"先进先出"的特点,即元素从队尾依次进队列,依次从队头出队列:现在用两个队列模拟实现一个栈的 ...

  3. 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?

    1.栈和队列分析 栈是一种特殊的线性表.其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行 队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的 ...

  4. java 栈和队列实现迷宫代码_使用两个队列实现一个栈

    两个队列实现一个栈 栈的特点是后进先出,队列的特点是先进先出.使用两个队列模拟栈,实现栈的push,pop,top,empty 操作. 假设队列中均为数字,其中队列q1为操作队列,q2为辅助队列. p ...

  5. 【c语言】两个队列实现一个栈

    两个队列实现一个栈 核心思想:模拟出栈的后进先出操作 创建queue1和queue2,入栈时选择一个非空队列执行入队列操作(若两个队列都为空,则随机选择一个队列),出栈时需要先从非空队列queue1把 ...

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

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

  7. 【栈和队列专题】—— 双队列模拟栈

    LeetCode 225 : 用队列实现栈 队列 1.一些关于队列的基本操作 向队列中添加元素[3种方法] queue.add(value) queue.offer(value) queue.put( ...

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

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

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

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

最新文章

  1. object dection资源
  2. hdu3622 二分+2sat
  3. shell脚本详解(六)——数组简介和排序算法
  4. h5前端有php,【前端】为什么有些网站的页面地址,没有加上html或者php或者jsp的后辍名?...
  5. java框架ssh实验报告_基于SSH的实验报告提交系统
  6. 微信喊你来找工作:上千家企业将提供超10万个就业岗位
  7. ASICFPGA中的三态
  8. 关于慢开始、拥塞控制、快重传、快恢复算法的理解
  9. redis服务端的maxclient和最大连接空闲时间设置
  10. matlab与c 混合编程问题,MATLAB与C/C++混合编程的一些总结
  11. 解析文本文件 r 与 rb 模式的区别(Python)
  12. 二_单元测试和代码覆盖率
  13. 分库分表工具:Apache ShardingSphere 5.0.0-alpha 发布
  14. 【应用回归分析】一元简单线性回归显著性检验,t检验和F检验统计量抽样分布推导
  15. 【Python】Python 基本函数与操作-适合Python入门
  16. nginx 引号 x22
  17. 110115-07-6,Ac-LLM-CHOCalpain 抑制剂
  18. NVIDIA VIDEO ENCODER(NVENC)7.0.1 SDK 编码流程 学习笔记
  19. 强人工智能基本问题:自上而下还是自下而上?
  20. 公众号批量移动用户分组

热门文章

  1. PageRank算法和HITS算法
  2. 机器学习比赛、项目之模板
  3. 2022年乡村医生考试练习题及答案
  4. 图片极致压缩,不失真
  5. OpenPortal V5认证计费系统说明文档
  6. 用户手册应当由谁写?
  7. oracle建表时check约束用法,Oracle之Check约束实例具体解释
  8. excel2019数字太长无法显示解决办法
  9. 手机射击游戏中弹幕的开发
  10. 【Kali_017】软件包管理synaptic