数据结构(队列)

一.什么是队列

1.队列定义

        队列是一种特殊的线性表,特殊之处在于他只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。和栈一样,队列也是一种操作受限制的线性表。进行插入操作的一端称为队尾,进行删除操作的一端称为队头或者队首。

2.队列特点

        ①   队列中的元素满足先进先出(FIFO)的特点,即先进入队列的元素总是最先从队列移出。这种特点使得队列在处理数据时具有优势,能够高效地组织和管理进程。同时,先进先出也保证了队列中元素的顺序稳定,避免了一些特护情况下的数据丢失。

        ② 限制插入和删除操作:队列只允许在队尾插入元素,在队头删除元素。

        ③ 应用广泛:队列在计算机领域中应用广泛,如操作系统、网络通信、数据压缩等,在实际生活中,排队买票、办理业务等也可以用队列来模拟和处理。

二.队列的基本操作 

1.首先定义一个队列接口,编写队列的几种基本操作

public interface myQueue<T> {

    // 入队
    void offer(T val);

    // 出队
    T poll();

    // 查看队首元素
    T getFront();

    // 获取当前队列中的元素个数
    int getSize();

    // 判断队列是否为空
    boolean isEmpty();

}

2.我们创建一个类去实现我们自己撰写的接口

// 以数组为队列的数据存储结构
public class ArrOrdQueue<T> implements myQueue<T> {
    private MyArray<T> data;
    int size;
    public ArrOrdQueue() {
        this.data = new MyArray<>(100);
        this.size = 0;
    }

    @Override
    public void offer(T val) {
        this.data.add(val);
        this.size++;
    }

    @Override
    public T poll() {
        if(isEmpty()){
            return null;
        }
        return this.data.removeFromLast();
    }

    @Override
    public T getFront() {
        if(isEmpty()){
            return null;
        }
        return this.data.getValue();
    }

    @Override
    public int getSize() {
        return this.data.getSize();
    }

    @Override
    public boolean isEmpty() {
        return this.data.isEmpty();
    }

}

 3.入队操作

    // 添加元素
    public void add(T item) {
        this.arr[this.size] = item;
        this.size++;
    }

4. 判断队列是否为空

    // 判空
    public boolean isEmpty() {
        return this.size == 0;
    }

5.出队操作

    public T removeFromLast() {
        T delVal = this.arr[this.size - 1];
        this.size--;
        return delVal;
    }

6. 查看当前队头元素

    public T getValue() {
        return getValueByIndex(this.size - 1);
    }

    // 获取指定位置的值
    public T getValueByIndex(int index) {
        // 入参判断
        if (index < 0 || index > capacity) {
            throw new IllegalArgumentException("索引异常!");
        }
        return this.arr[index];
    }

7.获取当前队列中元素的个数

    // 获取元素个数
    public int getSize() {
        return this.size;
    }

 三.队列的应用

        ① 图的遍历算法中的广度优先搜索就可以用队列辅助。

        ② 可用于计算机的模拟。

        ③ 可作为CPU的作业调度。使用队列来处理,可实现先到先执行的要求

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350785.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装好IntelliJ IDEA点击无反应,如何解决配置文件不一致导致的启动问题

在我们的开发生涯中&#xff0c;遇到IDE工具出现问题是在所难免的。最令人头疼的莫过于&#xff0c;你的IDEA(IntelliJ IDEA)无法启动&#xff0c;而且没有任何错误提示。这篇文章将详细讲解如何解决IntelliJ IDEA 2023.3.3版本启动失败的问题&#xff0c;这个问题可能也适用于…

【日常学习笔记】gflags

https://mp.weixin.qq.com/s/FFdAUuQavhD5jCCY9aHBRg gflags定义的是全局变量&#xff0c;在main函数后&#xff0c;添加::gflags::ParseCommandLineFlags函数&#xff0c;就能解析命令行&#xff0c;在命令行传递定义的参数。 在程序中使用DEFINE_XXX函数定义的变量时&#x…

ES 分布式搜索的运行机制

ES 分布式搜索的运行机制-腾讯云开发者社区-腾讯云 ES 分布式搜索的运行机制 ES 有两种 search_type 即搜索类型&#xff1a; •query_then_fetch &#xff08;默认&#xff09;•dfs_query_then_fetch query_then_fetch query_then_fetch 1.用户发起搜索&#xff0c;请求…

翻译: 使用 GPT-4 将Jupyter Notebook 转换为Streamlit

GPT-4 提升Streamlit 应用系列 翻译: 使用 GPT-4 将您的 Streamlit 应用程序提升到一个新的水平一 1 .  在几分钟内将 Jupyter 笔记本转换为 Streamlit 应用程序 如果从头开始创建 Streamlit 应用程序很有趣&#xff0c;那么将 Jupyter 笔记本转换为 Streamlit 应用程序就…

PuLP库-多数线性规划问题

投标价格重预算 背景 甲方需要采购一批物资&#xff0c;采购数量为甲方给定的预计采购数量&#xff0c;并限制了采购总价。例甲方采购预算清单如下&#xff0c;采购总预算为不超过 3175 元 采购内容采购数量投标单价投标报价合计电脑10空调20洗衣机8桌子7打印机35合计 注&a…

NFT Insider #118:The Sandbox 推出涩谷109新系列人物化身,Game Maker 0.9 现已开放下载

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

新手教程 -- 将本地idea代码上传至gitee仓库

文章目录 前言一、创建本地仓库二、创建gitee远程仓库三、本地仓库上传至远程仓库总结 前言 在此教程之前&#xff0c;确保你的git软件已经安装好了&#xff0c;那么才能使用git到idea里面使用&#xff01;&#xff01;&#xff01; 你也需要提前注册一个gitee账号等待使用&a…

K8s(八)持久化存储emptyDir、hostpath、nfs

#查看帮助 kubectl explain pods.spec.volumes awsElasticBlockStore <Object> # AWS Elastic Block Store&#xff08;EBS&#xff09;卷的配置对象 azureDisk <Object> # Azure Disk卷的配置对象 azureFile …

数据分析的理念、流程、方法、工具(上)

一、数据的价值 1、数据驱动企业运营 从电商平台的「猜你喜欢」到音乐平台的「心动模式」&#xff0c;大数据已经渗透到了我们生活的每一个场景。不论是互联网行业&#xff0c;还是零售业、制造业等&#xff0c;各行各业都在依托互联网大数据&#xff08;数据采集、数据存储、…

恒创科技:香港服务器内存不足有哪些原因?

内存是服务器中非常重要的组件之一&#xff0c;它直接影响服务器的运行速度和稳定性。然而&#xff0c;在使用香港服务器的过程中&#xff0c;有时候会出现内存不足的情况&#xff0c;导致服务器性能下降&#xff0c;甚至出现宕机等问题。那么&#xff0c;香港服务器内存不足的…

Vue中使用TypeScript:全面指南和最佳实践

🚀 欢迎来到我的专栏!专注于Vue3的实战总结和开发实践分享,让你轻松驾驭Vue3的奇妙世界! 🌈✨在这里,我将为你呈现最新的Vue3技术趋势,分享独家实用教程,并为你解析开发中的难题。让我们一起深入Vue3的魅力,助力你成为Vue大师! 👨‍💻💡不再徘徊,快来关注…

高频词800词版本

【金山文档】 【英语342】 高考800高频词 https://kdocs.cn/l/cdwnHjWNbKN9

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)-机器人、强化学习

专属领域论文订阅 关注{晓理紫}&#xff0c;每日更新论文&#xff0c;如感兴趣&#xff0c;请转发给有需要的同学&#xff0c;谢谢支持 如果你感觉对你有所帮助&#xff0c;请关注我&#xff0c;每日准时为你推送最新论文。 分类: 具身智能&#xff0c;机器人强化学习开放词汇&…

MSTP协议

目录 MSTP 基本原则 MSTP术语 BPDU变化 三种生成树的比较 MSTP MSTP&#xff08;802.1s&#xff09;多生成树。 多生成树(MSTP)解决&#xff1a; &#xff08;1&#xff09;去掉环 &#xff08;2&#xff09;负载均衡&#xff08;重点&#xff09; &#xff08;3&#xf…

6K star!大神出书,解决(几乎)所有机器学习的问题

今天我们推荐的既是一个开源项目更是一本书&#xff0c;它是由技术界的大神Abhishek Thakur 所作&#xff0c;可以帮你解决(几乎)所有机器学习的问题&#xff0c;开源项目在GitHub 有 6K Star&#xff0c;它就是&#xff1a;approachingalmost。 approachingalmost是什么? ap…

大创项目推荐 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

五、Kotlin 函数进阶

1. 高阶函数 1.1 什么是高阶函数 以下 2 点至少满足其一的函数称为高阶函数&#xff1a; 形参列表中包含函数类型的参数 //参数 paramN 可以是&#xff1a;函数引用、函数类型变量、或 Lambda 表达式。 fun funName(param1: Type1, param2: Type2, ... , paramN: (p1: T1, p2…

Java接收curl发出的中文请求无法解析

最近做项目遇到了这种情况&#xff0c;Java接收curl发出的中文请求无法解析&#xff0c;英文请求一切正常&#xff0c;中文请求则对方服务器无法解析&#xff0c;可以猜测是中文导致的编码问题&#xff0c;但是奇怪的是&#xff0c;本地输出json也没有乱码&#xff0c;编解码正…

Unity——八叉树的原理与实现

八叉树原理 八叉树&#xff08;Octree&#xff09;是一种用于在三维空间中进行空间分割的数据结构。它将三维空间递归地划分为八个子空间&#xff0c;每个子空间对应于一个八叉树节点。这种分割方式可以有效地组织和管理场景中的对象&#xff0c;提高检索效率&#xff0c;特别…

ubuntu 相关内容

ubuntu 优盘安装&#xff1a; 台式机安装纯ubuntu系统的操作步骤-CSDN博客https://blog.csdn.net/youngwah292/article/details/127032009?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170583039216800213099577%2522%252C%2522scm%2522%253A%252220140713.1301…