队列的定义:

队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。

(1)允许删除的一端称为队头(Front)。

(2)允许插入的一端称为队尾(Rear)。

(3)当队列中没有元素时称为空队列。

(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。

队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾,每次离开的成员总是队列头上的(不允许中途离队)。

队列的存储结构及实现

队列的顺序存储结构

(1) 顺序队列的定义:

队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。

(2)顺序队列的表示:

和顺序表一样,顺序队列利用内存中一段连续的存储空间来存放当前队列中的元素。

由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素,它们的初值在队列初始化时均应置为0。

(3)顺序队列的基本操作

入队时:将新元素插入rear所指的位置的后一位。

出队时:删去front所指的元素,然后将front加1并返回被删元素。

(4)顺序表的溢出现象

①“下溢”现象

当队列为空时,做出队运算产生的溢出现象。“下溢”是正常现象,常用作程序控制转移的条件。

② "真上溢"现象

当队列满时,做进栈运算产生空间溢出的现象。“真上溢”是一种出错状态,应设法避免。

③ "假上溢"现象

由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于内存中本分配的空间时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。如下图

循环队列:

如上图所示,这种头尾相接的顺序存储结构称为循环队列(circular queue)。

循环队列中需要注意的几个重要问题:

①队空的判定条件,队空的条件是front=rear;

②队满的判定条件,(rear+1)%QueueSize=front。QueueSize为队列初始空间大小。

循环队列的java实现代码

以上所述是小编给大家介绍的Java数据结构之队列(动力节点Java学院整理),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)相关推荐

  1. java数据结构 队列_Java数据结构之队列

    public class MyQueue { int[] elements; public MyQueue() { elements = new int[0]; } //入队 public void ...

  2. Java servlet视频教程,完整体系课程-动力节点

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层,使用 Servl ...

  3. 网页制作 HTML设为首页和加入收藏_动力节点Java学院整理

    网页制作 HTML设为首页和加入收藏_动力节点Java学院整理 IE浏览器下如何实现"设为首页","加入收藏"的功能 解决思路: 将指定URL设为首页的功能主要 ...

  4. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  5. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  6. java queue通信_Java -- 使用阻塞队列(BlockingQueue)控制线程通信

    BlockingQueeu接口是Queue的子接口,但是它的主要作用并不是作为容器,而是作为线程同步的工具. 特征: 当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程 ...

  7. java循环遍历队列_java实现循环队列

    java实现循环队列 循环队列的优点 普通队列出队操作开销大:在出队操作时,索引为0后面的所有元素,都需要往前移动一位,元素越多,消耗的时间也越多,时间复杂度为O(N). 循环队列的逻辑: 1.当元素 ...

  8. java 如何判定消息已在队列_Java面试—消息队列

    消息队列面试题 题目来自于中华石杉,解决方案根据自己的思路来总结而得.题目主要如下: 1. 为什么要引入消息队列? 消息队列的引入可以解决3个核心问题: 解耦 异步 削峰 解耦 在一个项目中,如果一个 ...

  9. java 排序队列_java实现顺序队列

    packagequeue;importjava.util.Scanner;public classArrayQueueLoop {public static voidmain(String[] arg ...

最新文章

  1. C# 给某个方法设定执行超时时间
  2. chrome扩展程序开发
  3. Redis安装和使用指南
  4. android studio 不生成buildconfig,Android Studio Update 0.4.0找不到buildConfig()
  5. 关于2d物理引擎box2d与ape的评论
  6. Java 4.表达式
  7. vue个人学习(三)----组件
  8. ASP.NET MVC显示UserControl控件(扩展篇)
  9. Linux服务器安装宝塔面板,Linux服务器安装宝塔服务器管理控制面板
  10. H3BPM实例分享——金额规则大写
  11. 应用NMOS和晶体三极管作为基本开关管的相关知识
  12. 下载FLV资源的几种办法
  13. 链表实现c语言通讯录管理系统,C++链表实现通讯录管理系统
  14. MFC 绘制半透明图片
  15. 网络安全——企业渗透一
  16. 怎么配置java环境_idea配置java环境
  17. 推荐免费小巧图片大小处理工具--Image Resizer for Windows
  18. MS17-010补丁下载与安装,防WannaCrypt勒索软件前提!
  19. flutter 旧有V1项目升级V2
  20. tkinter常用控件

热门文章

  1. qt for android 图片可拉伸,qt实现九宫格布局,图片拉伸
  2. linux和mysql重点哪个_重要的MySQL 文档存储知识点扫盲
  3. sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root
  4. layui-弹出层中如何关闭窗口
  5. php动态数组的用法
  6. 【 Grey Hack 】万金油脚本:常见端口漏洞检测
  7. MS SQL Server2008大数、小数转varchar
  8. mybatis 查询之神坑
  9. screen 断开 screen -r 不能进入断开的会话
  10. [react] react中发起网络请求应该在哪个生命周期中进行?为什么?