这篇page是针对leetcode上的232.用栈实现队列这道题所写的,小尼先简单的说明一下这道题,就是利用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)。小尼首先说明一下栈的特点栈的特点是先入后出,队列的特点是先入先出。接下来小尼会讲解两种思路。上一下图:

大家可以先看看上面小尼写的思路啊,然后小尼再给各位实现一下它的各个功能:

public void push(int x){if(s1.empty())front = x;//此处的front是用来记录首节点的while(!s1.isEmpty())s2.push(s1.pop());s2.push(x);while(!s2.isEmpty())s1.push(s2.pop());
}

首先上面实现的push的功能,其实也就将小尼说的两个栈的好好利用实现了队列的功能,这里的写的方法和小尼上面图中所说的有一个地方不同,希望大家可以注意一下,小尼上面说先将s1的元素放入s2中,然后再把我们新入的元素放入s1中,再将s2中的元素放入回来,但是小尼上面写的代码是再将s1的元素放入之后直接就把新入的元素直接放到s2的最上面然后再将s2的元素放入s1中,但是区别不大。好,小尼继续写其他的方法的实现:

public void pop(){s1.pop();if(!s1.isEmpty())front = s1.peek();
}
public boolean empty(){return s1.isEmpty();
}
public int peek(){return front;
}

好的,小尼接下来说明一下第二种实现的方法,小尼先上一张图:

接下来小尼对着这个方法拉一下代码:

class MyQueue{Deque<Integer> s1;Deque<Integer> s2;public void MyQueue(){s1 = new ArrayDeque<Integer>();s2 = new ArrayDeque<Integer>();}public void push(x){s1.push(x);}public int pop(){if(s2.isEmpty()){change();}}public boolean empty(){return s1.isEmpty() && s2.isEmpty();}public void change(){while(!s1.isEmpty()){s2.push(s1.pop());}}
}

上述代码可以实现两个栈完成队列的功能

My Twentieth Page - 用栈实现队列 - By Nicolas相关推荐

  1. 栈和队列在python中的实现

    栈和队列是两种基本的数据结构,同为容器类型,队列是先进先出,栈是先进后出. 栈 栈提供 push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterat ...

  2. c++数据结构队列栈尸体_一本正经的聊数据结构(3):栈和队列

    前文传送门: 「一本正经的聊数据结构(1):时间复杂度」 「一本正经的聊数据结构(2):数组与向量」 引言 前一篇内容我们介绍了数组和向量,虽然说向量是数组的一个升级版,但是在另一个维度上,他们都属于 ...

  3. 剑指offer:面试题09. 用两个栈实现队列

    题目:用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有 ...

  4. leetcode-232 用栈实现队列

    使用栈实现队列的下列操作: push(x) – 将一个元素放入队列的尾部. pop() – 从队列首部移除元素. peek() – 返回队列首部的元素. empty() – 返回队列是否为空 栈的特点 ...

  5. 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解

    一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...

  6. 数据结构,堆和栈和队列的概念

    数据结构,堆和栈和队列的概念 1 什么是数据结构 数据结构是计算机存储,组织数据的反复改.数据结构是指相互之间存在的一种或多种特定关系的数据元素集合. 2 数据结构的逻辑结构 1 集合结构,元素都是孤 ...

  7. Java数据结构与算法(第四章栈和队列)

    2019独角兽企业重金招聘Python工程师标准>>> 本章涉及的三种数据存储类型:栈.队列和优先级队列. 不同类型的结构 程序员的工具 数组是已经介绍过的数据存储结构,和其他结构( ...

  8. 学习JavaScript数据结构与算法(一):栈与队列

    本系列的第一篇文章: 学习JavaScript数据结构与算法(一),栈与队列 第二篇文章:学习JavaScript数据结构与算法(二):链表 第三篇文章:学习JavaScript数据结构与算法(三): ...

  9. 剑指offer_第5题_用两个栈实现队列

    题目描述 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 理解 关于栈 什么是栈 栈的抽象数据类型 Python实现栈 关于队列 什么是队列 队列抽象数据类型 Pyt ...

最新文章

  1. 初学算法-快速排序与线性时间选择(Deterministic Selection)的C++实现
  2. cmw500综合测试仪使用_综合布线中手持式测试仪
  3. Python版九九乘法表
  4. php 一片空白,解决运行PHP一片空白
  5. 【渝粤题库】国家开放大学2021春2726畜禽生产概论题目
  6. 智能卡门禁管理系统_出入口门禁控制系统与消防火灾报警系统怎么联动?
  7. PAT 乙级 1027. 打印沙漏(20) Java版
  8. 今天终于结束了考试,不知道结果
  9. [转载] python zip 文件解压中文乱码问题解决
  10. Sql Server 2014 双节点群集无法切到其中一节点解决
  11. mysql汽车品牌系列_爬取汽车之家汽车品牌型号系列数据
  12. 数据挖掘-基于随机森林模型的企业偷漏税纳税人识别
  13. [转载]ubuntu samba Windows共享 你可能没有权限访问网络资源
  14. spring cloud gateway转发服务报错。
  15. 使用@Slf4j的正确方法
  16. 数据库------绪论+关系数据库及其运算基础
  17. java 庖丁解牛_庖丁解牛 --JAVA 栈的实现
  18. Python调用xbox手柄马达震动
  19. 【Unity实战100例】Unity屏幕画线,Unity屏幕画图HSJ绘画工具
  20. Hbase之一月速成:Hbase的shell命令

热门文章

  1. JSP页面tdl自定义标签的做法
  2. 小度智能音箱=高灵敏度窃听器
  3. 轨道交通通信施工学习总结(一)施工准备
  4. 计算机软件技术实习01
  5. Word:显示文档修改痕迹
  6. 用python写个云顶之弈阵容助手,助你今晚“吃鸡”(遗传算法)
  7. 推荐下MXF视频文件播放工具
  8. python制作购物网站开题报告_网上商城的设计与实现开题报告
  9. 名字空间的妙处~~~
  10. 阿里工作8年熬到P8,经验全在这份864页文档里了,已助朋友进腾讯!