数据结构———>队列

2023-11-03

一、使用场景

银行排队,政务大厅排队(排队取号)

二、队列定义

1、队列是一个有序列表,可以用数组或是链表来实现
2、先入先出原则,即:先存入的数据先取出,后存入的数据后取出
3、队列示意
在这里插入图片描述

三、数组模拟队列

代码实现

//数组模拟队列
class Queue{
    private int maxSize;//数组容量
    private int front;//队列头
    private int rear;//队列尾
    private int[] Array;//存放数据,模拟队列

    //创建queue类的构造器
    public Queue(int arrMaxSize) {
        maxSize = arrMaxSize;//数组的最大长度
        Array=new int[maxSize];
        front=-1;//指向队列头部,front是指队列头的前一个位置
        rear=-1;//指向队列尾部,rear是值队列的尾部
    }

    //判满
    public boolean isFull(){
        return rear==maxSize-1;
    }

    //判空
    public boolean isEmpty(){
        return rear==front;
    }

    //添加数据到队列(入队)
    public void addQueue(int data){
        //判满
        if(isFull()){
            return;
        }
        rear++;//rear后移,数据入队
        Array[rear]=data;
    }

    //获取队列数据(出队)
    public int getQueue(){
        //判空(没有数据当然出不了队)
        if(isEmpty()){
            //抛出异常
            throw new RuntimeException("队列为空");
        }
        front++;//头指正向后移,取数据
        return Array[front++];
    }
    //显示队列所有数据
    public void showQueue(){
        //判空
        if(isEmpty()){
            System.out.println("队列为空");
            return;
        }
        //遍历
        for (int i = 0; i <Array.length ; i++) {
            System.out.printf("arr[%d]=%d\n",i,Array[i]);
        }
    }
    //显示队列头数据(队列的第一个数据)
    public int headQueue(){
        //判空
        if(isEmpty()){
            throw new RuntimeException("队列为空");
        }
        return Array[front+1];
    }
}

四、 队列实现思路

/**
 * 队列思路分析
 * 1、创建一个使用数组模拟队列的类
 *      1.1定义maxsize 表示数组的最大容量
 *      1.2定义front   表示队列头
 *      1.3定义rear    表示队列尾巴
 *      1.4定以int型数组arr  用于存放数据
 *  2、创建队列的构造器
 *      1.1front=-1;指向队列头部
 *      1.2rear=-1;指向队列尾部
 *  3、判满
 *  4、判空
 *  5、编写添加数据的方法,入队列
 *  6、编写获取数据的方法,出队列
 *  7、编写显示队列所有数据的方法
 *  8、编写显示头数据的方法
 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构———>队列 的相关文章

随机推荐

  • eterm显示未连接服务器,eterm一直显示未链接服务器

    eterm一直显示未链接服务器 内容精选 换一换 自动恢复 弹性云服务器所在的硬件出现故障时 系统会自动将弹性云服务器迁移至正常的物理机 该过程会导致云服务器重启 云容器引擎CCE在国内首家发布了基于鲲鹏系列芯片的容器服务 鲲鹏容器集群 A
  • PingCAP 创始人刘奇:开源分布式数据库如何搞定 OLTP

    7月28日 以 科技 洞见未来 为主题的 QingCloud Insight 2016 大会将在北京召开 连接云计算产业链上下游 展示 IT 领域最新研发成果 作为 NewSQL 技术的代表 PingCAP 联合创始人 CEO 刘奇将在本次
  • 3dmax常见的八十个问题汇总

    1 为什么3dmax的页面上显现奇怪的字体 只有最上部菜单的字体显示是正常的 答 这是机器上Windows字体安装过多的缘故 尤其是安装了一些特别的中文字体等 为此可以将 HKEY CURRENT CONFIG Display Settin
  • tensorflow tf.keras.layers tf.image 图像增强

    import matplotlib pyplot as plt import numpy as np import tensorflow as tf import tensorflow datasets as tfds from tenso
  • 使用opencv python导入tensorflow训练的Object Detection模型并进行预测

    最近在使用tensorflow训练Object Detection的模型 训练好的模型想用于视频中物体的识别和跟踪 由于opencv用于视频和图片的处理非常方便 所以想用opencv直接导入tensorflow训练好的模型 查了一下open
  • 设置实体类型中String类型的属性值为String.Empty

    1
  • 递归算法学习——黄金矿工,不同路径III

    目录 编辑 一 黄金矿工 1 题意 2 题目分析 3 题目接口 4 解题思路及代码 二 不同路径III 1 题意 2 解释 3 题目接口 4 解题思路及代码 一 黄金矿工 1 题意 你要开发一座金矿 地质勘测学家已经探明了这座金矿中的资源分
  • 各种系统的简称

    GMP GOOD MANUFACTURING PRACTICES 中文含义是 生产质量管理规范 或 良好作业规范 优良制造标准 分为六大系统 1 质量系统 Quality 2 实验室系统 Laboratory Control 3 生产系统
  • java时间对比

    1 LocateTime转成时间戳进行对比 获取当前时间的LocalDateTime对象 LocalDateTime ldt LocalDateTime now 将ldt对象转化为时间戳 long l1 ldt toEpochSecond
  • vue中如何安装vConsole工具

    vConsole简介 说起网页调试 大家肯定首先会想起chrome浏览器开发者模式中的console控制台 没错 今天给大家介绍一个在微信端的工具vConsole 其功能和电脑端的控制台基本一致 能运行JS代码 查看cookie 抓包等 优
  • div在整个页面水平居中 垂直居中

    DOCTYPE html PUBLIC W3C DTD XHTML 1 0 Transitional EN http www w3 org TR xhtml1 DTD xhtml1 transitional dtd gt
  • 访问网络服务-Go对IPC的支持

    访问网络服务 Go对IPC的支持 文章目录 访问网络服务 Go对IPC的支持 一 socket与IPC 1 1 IPC 进程间通信 1 2 socket 套接字 二 Go语言对IPC的支持 2 1 socket 的系统调用 2 2 Go语言
  • Redis的缓存穿透及解决方法——布隆过滤器BloomFilter

    目录 1 Redis概述 2 Redis的主要应用场景 3 缓存穿透及布隆过滤器 1 缓存穿透 大量查询一个不存在的key 定义 2 解决方法 ps 布隆过滤器原理 ps 布隆过滤器另一个用途 推荐去重 1 Redis概述 Redis是一个
  • thinkphp:查询本周中每天中日期的数据,查询今年中每个月的数据,查询近五年每年的总数据

    一 查询本周中每天中日期的数据 结果 以今天2023 09 14为例 这一周为2023 09 11 2023 09 07 代码 后端thinkphp 查询本周每天的的总金额数 获取本周的起始日期和结束日期 weekStart date Y
  • 1-5G基站是如何起名的?NR,gNB,en-gNB,ng-eNB,EN-DC,NE-DC,NGEN-DC,NG-RAN......

    1G 基站就叫Base Station 简称BS 简单 直接 2G 基站名称升级为Base Transceiver Station 简称BTS 也叫基站收发信台 名称的内涵开始丰富起来 3G 到了这个时候 那些专家似乎对抽象的东西情有独钟
  • 目标追踪算法流程详细介绍

    一 概要 目前常见的目标追踪算法有FairMoT DeepSort等 本文以YOLOv5 目标检测 DeepSort 轨迹分配 为例掰开了揉碎了进行讲解 力争通过本文一次性了解目标追踪以及其中所涉及到的一些方法原理 二 一图以蔽之 1 特征
  • Python 小波分析

    python 小波分析和小波相干 文章目录 python 小波分析和小波相干 写在前面 小波分析 小波相干 小结 写在前面 这个东西单纯为了记录一下用Python做小波分析和小波相干的过程 以及怎么理解得的的结果 MATLAB中有很成熟的小
  • java 注释模板_[JAVA] IDEA注释模板

    一 文件注释 创建文件后 编译器会在类名前面生成固定的注释 来丰富代码的可读性 在阿里巴巴Java开发手册里也明确写到所有的类都必须添加创建者和创建日期 description NAME date DATE TIME author USER
  • 睿智的目标检测40——Keras搭建Retinaface人脸检测与关键点定位平台

    睿智的目标检测40 Keras搭建Retinaface人脸检测与关键点定位平台 学习前言 什么是Retinaface人脸检测算法 源码下载 Retinaface实现思路 一 预测部分 1 主干网络介绍 2 FPN特征金字塔 3 SSH进一步
  • 数据结构———>队列

    队列 一 使用场景 二 队列定义 三 数组模拟队列 四 队列实现思路 一 使用场景 银行排队 政务大厅排队 排队取号 二 队列定义 1 队列是一个有序列表 可以用数组或是链表来实现 2 先入先出原则 即 先存入的数据先取出 后存入的数据后取