队列介绍

  • 队列是一个有序列表,可以用数组或是链表来实现
  • 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的数据要后取出

数组模拟环形队列

分析说明:
  • 尾索引rear的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在做判断队列满的时候需要注意(rear + 1) % maxSize = front (满)
  • rear == front (空)
  • 构造思路
    • front变量的含义:front指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素,front的初始值=0
    • rear变量的含义:rear指向队列最后一个元素的下一个元素,因为希望空出一个空间做为约定。rear的初始值=0
    • 当队列满时,条件是(rear + 1) % maxSize == front (满)
    • 当队列为空的条件,rear == front 空
    • 队列中有效的数据的个数(rear + maxSize - front) % maxSize

代码实现

package com.debuggg.java.queue;public class CircleQueue {private int[] queue;private int rear;private int front;private int maxSize;public CircleQueue(int maxSize) {this.maxSize = maxSize;queue = new int[maxSize];}// 判断为空public boolean isEmpty() {return rear == front;}// 判断为满public boolean isFull() {return (rear + 1) % maxSize == front;}// 添加数据public void push(int val) {if (isFull()) {throw new RuntimeException("队列满!");}queue[rear] = val;rear = (rear + 1) % maxSize;}// pop数据public int pop() {if (isEmpty()) {throw new RuntimeException("队列为空!");}int val = queue[front];front = (front + 1) % maxSize;return val;}// peek数据public int peek() {if (isEmpty()) {throw new RuntimeException("队列为空!");}return queue[front];}// 显示当前有效数据个数public int size() {return (rear + maxSize - front) % maxSize;}
}

Java数据结构与算法-环形队列相关推荐

  1. JAVA数据结构与算法【队列、数组模拟(环形)队列】

    队列 使用场景:排队 队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取出.后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列 ...

  2. 数据结构与算法 — 环形队列

    环形队列的定义 在顺序队列的操作中,有时会发生假溢出的情况.假溢出就是队尾指针rear已经指向了data数组的最大下标,而另一端还有剩下空位置.为了解决这种问题,可以把数组的前端和后端连接起来,形成一 ...

  3. Java数据结构与算法:队列

    1. 队列的介绍 队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out, 缩写为FIFO)的特性.在队列中 ...

  4. java数据结构与算法之(Queue)队列设计与实现

    [版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...

  5. java数据结构与算法之顺序表与链表深入分析

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...

  6. java数据结构与算法之双链表设计与实现

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: java数据结 ...

  7. 用数组实现环形队列(尚硅谷Java数据结构与算法)

    整个代码在文章最后面,gitee地址:java数据结构与算法: 自己学习与练习数据结构的仓库https://gitee.com/ALi_L/javaDataStructurs.git 环形队列的难点如 ...

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

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

  9. 数据结构 - Java -韩顺平 图解Java数据结构和算法

    数据结构 Lesson 1 数据结构的知识总结 1. 几个经典的算法面试题 2. 线性结构与非线性结构 2.1 稀疏数组 sparsearray 2.2 队列 2.2.1 顺序队列: 2.2.2 环形 ...

最新文章

  1. 思维 ---- 两两匹配问题 2021杭电多校第6场 E - Median
  2. 从一次故障聊聊前端 UI 自动化测试
  3. 他是娱乐圈最低调的人,甘当多年绿叶,没想到竟是鲁迅的侄子
  4. .net core出现Http Error 502.5 - Process Failure
  5. 卓越性能代码_开启win10隐藏的“超级性能模式”
  6. linux保存输出结果到txt
  7. 计算机应用技术国外现状,浅析计算机应用技术的现状及发展趋势
  8. android 光晕动画,Android去掉SrollView、GrdiView、RecycleView、ViewPager等可滑动控件滑动到边缘的光晕效果...
  9. C Primer Plus(第五版)7
  10. 直面Java第45期
  11. Unity3d鼠标点击屏幕来控制人物的走动
  12. 无差异曲线matlab算法,引入Matlab提高经济类线性代数应用能力
  13. 仿网易/QQ空间视频列表滚动连播炫酷效果
  14. 北京远卓科技有限责任公司2017笔试题
  15. 排队叫号医院管理系统源码
  16. 如何用python处理文件(图文详解)
  17. 小程序源码:喝酒神器新UI版本带特效和音效,-多玩法安装简单
  18. 怎样才能让青少年培养起阅读习惯?听听猿辅导这四位嘉宾怎么说
  19. shell脚本编程for循环求阶乘_shell脚本循环及函数
  20. 域名故事:史上超贵的域名成交记录

热门文章

  1. Oracle环境变量
  2. Oracle日期操作函数
  3. android 数据库 字节数组,java - 如何使用活动的android序列化字节数组并将其存储到数据库中? - 堆栈内存溢出...
  4. html跳动爱心代码,html+css实现跳动爱心❥(^_-)-Go语言中文社区
  5. linux运行不了.sh文件,linux下不能执行/bin/sh脚本的原因:command not found
  6. react 生成图片二维码_21个React开发神器
  7. 网络介绍 > 网络连接 > 混合云网络
  8. Java基础学习总结(106)——高级JAVA工程师必需技能
  9. 兰州中考计算机考试,宜昌、兰州发布中考新政新消息:增加口语考试,采取人机对话形式...
  10. Django - 模型序列化返回自然主键值