前言

在学习数据结构的过程当中,我们会学到栈和队列,在本篇文章中,重点讲解的是栈实现队列,故关于栈和队列的讲解只是简单带过。


一、栈

栈是一种后进先出的线性表,即只能在固定的一端进行插入和删除。

栈 方法

Stack() 构造一个空的栈
E push(E e) 将e入栈,并返回e
E pop() 将栈顶元素出栈并返回
E peek() 获取栈顶元素
int size() 获取栈中有效元素个数
boolean empty() 检测栈是否为空

二、队列

队列是一种先进先出的线性表,即只能在一端进行插入,另一端进行删除。

队列 方法

boolean offer(E e) 入队列
E poll() 出队列
E peek() 获取队头元素
int size() 获取队列中有效元素个数
boolean isEmpty() 检测队列是否为空

三、栈实现队列

结合栈和队列的简单示意图

不难发现一个栈难以实现队列,故使用两个栈演示尝试。

我们可以发现,使用一个栈进行入队列,另一个栈进行出队列,正好可以实现我们的想法。

故代码如下:

class MyQueue {Stack<Integer> queue1;//入Stack<Integer> queue2;//出public MyQueue() {queue1 = new Stack<>();queue2 = new Stack<>();}public void push(int x) {queue1.push(x);}public int pop() {int x = 0;if(queue2.isEmpty()){while(!queue1.isEmpty()){queue2.push(queue1.pop());}}x = queue2.pop();return x;}public int peek() {int x = 0;if(queue2.isEmpty()){while(!queue1.isEmpty()){queue2.push(queue1.pop());}}x = queue2.peek();return x;}public boolean empty() {return queue1.isEmpty()&&queue2.isEmpty();}
}
}

结语

关于栈实现队列,以上就是今天的内容,本文仅仅简单介绍了一下。

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位

数据结构/栈实现队列相关推荐

  1. 数据结构栈和队列_使您的列表更上一层楼:链接列表和队列数据结构

    数据结构栈和队列 When you want to store several elements somewhere in a program, the go-to data type is an a ...

  2. 数据结构栈与队列的应用之汽车轮渡问题——自己的一些理解

    本题摘自王道数据结构栈与队列的应用的课后题,题目如下: 某汽车轮渡口,过江渡船每次能载10辆汽车过江.过江车辆分为客车类和货车类,上渡船有如下规定:同类车先到先上船,客车先于货车上船,且每上4辆客车, ...

  3. 数据结构——栈与队列相关题目

    数据结构--栈与队列相关题目 232. 用栈实现队列 思路 225. 用队列实现栈 1.两个队列实现栈 2.一个队列实现栈 20. 有效的括号 思路 1047. 删除字符串中的所有相邻重复项 思路 1 ...

  4. 第十章 基本数据结构——栈和队列

    摘要 本章介绍了几种基本的数据结构,包括栈.队列.链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合.本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下. 1.栈和队列 栈和队列 ...

  5. 大话数据结构-栈与队列

    文章知识点来至于大话数据结构里边章节知识, 这篇主要介绍栈与队列在计算机中存储形式, 以及在某些算法领域中对栈和队列的相关应用.章节最后介绍了著名的逆波兰表达式, 以及通过算法来实现该表达式的运算过程 ...

  6. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  7. 【数据结构-栈和队列】详解栈和队列(代码+STL+原理)

    一.栈的应用 栈是一种先进后出(FILO)的数据结构 1.1 栈的操作实现 清空(clear): // 栈的清空操作就是把栈顶top置为-1 void clear(){top=-1; } // 清空栈 ...

  8. 算法与数据结构 -- 栈与队列(四)

    栈与队列定义了数据的操作 一.栈 栈是一种先入先出的数据结构.可以用顺序表实现,也可以用链表实现 栈操作 判断是否为空 压栈.入栈push 出栈 pop 返回栈顶元素 peek 栈的元素个数 # co ...

  9. 六十二、数据结构栈和队列的相互实现

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 算法,一门既不容易入门,也不容易精通的学问. 栈和队列都是用来保存数 ...

  10. 数据结构栈和队列以及常见算法题

    栈 概念:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作.进行数据插入和删除操作的一端称为栈顶,另一端称为栈底.栈中的数据元素遵守后进先出LIFO(Last In First Out)的 ...

最新文章

  1. Dalvik中类的加载
  2. Stream Processing: S4系统模型分析和关键源码读解
  3. 哈尔滨金融学院计算机系学生会,哈尔滨金融学院计算机系实习报告(毕业分散实习).doc...
  4. C#中在定义事件委托时怎样跨窗体传递参数
  5. 关于Unity中Shader的内置值
  6. Condition中的transferForSignal()方法的不解
  7. matlab pdist如何实现,在MATLAB版本7中相当于pdist2
  8. 在IIS6上部署MVC2网站(续篇)
  9. vue .prop修饰符
  10. php使用excel表格数据处理,php上传excel表格并获取数据
  11. 转载需作者授权是如何实现的
  12. matlab彩色图像变暗
  13. Practical Machine Learning实用机器学习 章1
  14. 面向对象技术之系统分析:类图
  15. Atitit onvif 协议截图 getSnapshotUri 使用java
  16. android 360短信拦截,Android版360卫士更威武
  17. 数字乡村建设浅谈(一):可行性、难点、思考
  18. 【大数据作业02】HDFS中的名称节点和数据结点的具体功能
  19. 批量去除图片的黑色背景,并且统一修改图片尺寸
  20. 企业运维岗位笔试真题

热门文章

  1. 计算机的发展是什么更新换代,计算机科学技术应用现状与发展趋势探讨
  2. python外汇兑换计算器_Python 3.2版本下实现简单的个人理财计算器(存款)脚本
  3. 如何在服务器管理器删除服务器,Windows 系统如何在服务器管理器删除服务器
  4. idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest
  5. 电脑自动开关机软件测试,电脑无故自动关机
  6. 高性能网络编程--陶辉
  7. 小米手机拦截返回音设置不了_烦人的骚扰电话该怎么有效拦截?其实很简单,以小米手机为例...
  8. MATLAB----绘制三维曲面
  9. Java中各国时区的写法
  10. Thread类源码解读(2)——线程状态及常用方法