Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >环形队列的实现(什么是环形队列)

环形队列的实现(什么是环形队列)

作者头像
全栈程序员站长
发布于 2022-08-02 02:50:29
发布于 2022-08-02 02:50:29
75200
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

环形队列可以使用数组实现,也可以使用循环链表实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package www.bittech;

public class MyCircularQueue {
    private int front;//队列头
    private int rear;//队列尾
    private int usedSize;//数据个数
    private int[] elem;//数组
    public MyCircularQueue(int k){
        this.elem=new int[k];
        this.front=0;
        this.rear=0;
        this.usedSize=0;
    }
    public boolean enQueue(int value){
        if(isFull()){
            return false;
        }
        this.elem[this.rear]=value;
        this.usedSize++;
        this.rear=(this.rear+1)%this.elem.length;
        return true;
    }
    //队尾下标加上1在%
    public boolean isFull(){
        if((this.rear+1)%this.elem.length==this.front){
            return true;
        }
        return false;
    }
    public boolean isEmpty(){
        return this.rear==this.front;
    }
    public boolean deQueue(int value){
        if(isEmpty()){
            return false;
        }
        this.elem[front]=value;
        this.front=(this.front+1)%this.elem.length;
        this.usedSize--;
        return true;
    }
    public int Front(){
        if(isEmpty()){
            throw new UnsupportedOperationException("队列为空");
        }
        return this.elem[this.front];
    }
     public int Rear(){
         if(isEmpty()){
             throw new UnsupportedOperationException("队列为空");
         }
         int index=this.rear == 0 ? this.elem.length-1 : this.rear-1;
         return this.elem[index];
     }

}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125500.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据结构】顺序表
前言: 小编在开始之前就已经发了顺序表的相关用例,想看的小伙伴可以去看看哦http://t.csdnimg.cn/saIbn
用户11288949
2024/09/24
670
【数据结构】顺序表
【数据结构】ArrayList与顺序表
---- 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 2.顺序表 2.1接口的实现 我们先自己来完成一个顺序表8:  具体效果如图: 源码如下: 建议小伙伴们自己思考一下上手敲一敲代码,对后续的学习可以更好的理解哟~ MyArr
xxxflower
2023/04/16
1960
【数据结构】ArrayList与顺序表
数据结构 之 顺序表 ArrayList (Java)
常见的线性表有:顺序表(ArrayList),链表(LinkedList),栈(Stack),队列(Queue)...
AUGENSTERN_
2024/04/09
1170
数据结构 之 顺序表 ArrayList (Java)
Java数据结构——队列
  最近博主在学习JavaWeb的过程中,讲到了具体线程的知识,在写生产与消费者模型的具体代码时,发现涉及到了循环队列的知识,于是打算再次复习一下循环队列的具体编写
RAIN7
2021/10/28
1.1K0
Java数据结构——队列
数组模拟队列
队列是一个有序列表,可以用数组或链表来实现,队列遵循先进先出的原则,即先存入的队列的数据要先取出,比如银行的排队叫号系统。
切图仔
2022/09/14
3490
数组模拟队列
【数据结构题目】循环队列,以及队列实现栈的模拟
循环队列,顾名思义就是数组组成了一个圈,开始时队数组的头索引和为索引都在一个位置下。
用户11288949
2024/09/24
980
【数据结构题目】循环队列,以及队列实现栈的模拟
【Java数据结构】详解Stack与Queue(一)
由于顺序栈是由顺序存储实现的,所以其底层是一个动态数组 。以下是其模拟实现的代码。
E绵绵
2024/06/04
1120
【Java数据结构】详解Stack与Queue(一)
​LeetCode 622:设计循环队列 Design Circular Queue
如上图所示,队列是典型的 FIFO 数据结构。插入(insert)操作也称作入队(enqueue),新元素始终被添加在队列的末尾。删除(delete)操作也被称为出队(dequeue)。你只能移除第一个元素。
爱写bug
2019/08/01
6990
​LeetCode 622:设计循环队列 Design Circular Queue
环形队列
图1中,rear和front分别代表队尾和队头并且初始化值都为0,此时都指队头,开始添加队列的操作,每次添加数据后,front不变,rear后移,rear的后移单位按照公式 (rear+1)%maxSize,maxSize表示队列的长度。
桑鱼
2020/03/17
8320
环形队列
用javascript分类刷leetcode18.队列(图文视频讲解)1
队列的特点:先进先出(FIFO)队列的时间复杂度:入队和出队O(1),查找O(n)优先队列:priorityQueue,按优先级出队,实现 Heap(Binary,Fibonacci...)js里没有队列,但是可以用数组模拟图片347. 前 K 个高频元素 (medium)给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = 1,1,1,2,2,3, k = 2输出: 1,2示例 2:输入: nums = 1, k
hellocoder2028
2023/01/03
7690
数据结构之环形队列
对前面的数组模拟队列的优化,充分利用数组,因此将数组看做是一个环形的。(通过取模的方式来实现即可)
用户11332765
2024/10/28
910
数据结构之环形队列
数据结构与算法 队列_数据结构中的排序算法
队列元素的进出遵循“先进先出”原则:即只允许在前端(front)也就是队头进行删除操作,而只能在后端(rear)也就是队尾进行插入操作。
全栈程序员站长
2022/09/23
4980
数据结构与算法 队列_数据结构中的排序算法
LeetCode 622. 设计循环队列
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。 它也被称为“环形缓冲器”。
Michael阿明
2020/07/13
5350
数据结构-4.栈与队列
栈: 一种特殊的线性表, 只许在固定的一端进行插入和删除元素操作. 进行数据插入和删除操作的一端称为栈顶, 另一端称为栈底. 栈中的数据元素遵守后进先出的原则.
用户11369350
2024/11/19
580
数据结构-4.栈与队列
java队列
队列为特殊的线性表,队列的特点先进先出(FIFO),队列插入为入队,队列删除为出对。
mySoul
2018/11/19
1K0
数据结构 之 队列(Queue)
队列和栈类似,是一种只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表;
AUGENSTERN_
2024/04/09
2150
数据结构 之 队列(Queue)
稀疏数组 & 环形队列
1、是什么? 比如有一个 11 * 11 的五子棋盘,我们要用程序模拟,那肯定就是二维数组。然后用1表示黑子,2表示白子,假如现在棋盘上只有一个黑子一个白子,那么也就是这个二维数组中只有一个1,一个2,其他都是无意义并不代表任何棋子的0,如下:
贪挽懒月
2020/09/01
4720
Java的栈与队列以及代码实现
栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶 栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等。 例如这把枪,第一发子弹是最后发射的,第一发子弹在栈底,而最新安装上去的子弹在栈的顶部,只有将上面的子弹打完(栈顶的数据走完),最后一发子弹才会射出
如烟花般绚烂却又稍纵即逝
2024/11/26
1530
Java的栈与队列以及代码实现
几幅图,干趴队列
今天继续来给大家上一盘硬菜,保证喂个半饱——嗝。和栈一样,队列(queue)也是一个非常有用的数据结构。同时又非常特殊,它只允许在队尾(rear)插入元素,在队首(front)删除元素,也就是一端进,一端出。
沉默王二
2021/03/16
4020
设计循环队列(leetcode 622)
循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为环形缓冲器(Ringr Buffer)。
恋喵大鲤鱼
2022/09/27
4780
设计循环队列(leetcode 622)
相关推荐
【数据结构】顺序表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验