| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【化解数据结构】详解队列,优先队列,循环队列,并实现一个队列 -> 正文阅读 |
|
[数据结构与算法]【化解数据结构】详解队列,优先队列,循环队列,并实现一个队列 |
💡 知识点抢先看
📢 碎碎念
一、什么是队列?和栈非常的相似,但是队列遵循的规则和栈不同 队列遵循先进先出的规则,也就是在尾部添加元素,从头部移除元素,最新添加的元素排在末尾 我们可以很形象的讲队列结构描绘成一个队伍 如下图,有很多人来买薯条,新来的人永远排在队伍的最后一位,买好的从队伍的最前面走掉 在生活中,几乎所有和排队有关的例子都可以用来描述一个队列 在上述的例子中, 我们把队伍的第一个元素称为对头,新增元素的操作叫做入队,买完薯条移除元素的操作叫做出队 在前端世界中,也有着很多关于队列的应用,例如
JavaScript 在执行是会维护一个微任务队列,遇到微任务会将其加入任务队列当中,执行完宏任务后,会到任务队列中取微任务来执行。具体关于执行机制、事件循环的内容,可以看之前的文章:JavaScript 运行机制解析 二、队列有哪些方法?和栈结构一样,队列也有着丰富的方法,比如入队、出队、查询等… 在这里我们主要介绍以下这些
三、手写实现一个队列了解了队列有哪些方法,可以来实现一个简单的队列结构 和栈这种线性结构一样,我们可以使用数组来实现一个队列 数组的一个元素看作是队头 数组的最后一位看作是队尾 1. 创建一个 Queue 类首先创建一个
2. 实现 enqueue 方法
3. 实现 dequeue 方法
我们来看看如何使用
实现动图 4. 实现 front 方法
5. 实现 isEmpty 方法
这里可以采用数组的
6. 实现 size 方法
7. 实现 clear 方法
8. 实现 print 方法
9. 完整的 Queue 类
到这里,我们已经实现了一个完整的队列结构,很轻易就能实现 在队列结构中,常常被提起的还有一个优先队列,我们再来简单的介绍一下 四、优先队列1. 什么是优先队列?优先队列是一种元素有优先级的队列,它的元素添加和移除都是基于优先级的,优先级高的先入队,优先级低的后入队。 在现实生活中大多数情况下都是优先队列,例如: 在医院的急诊室,医生会优先处理病情严重的患者,再处理相较弱的患者
2. 实现 enqueue 方法对于一个优先队列,它和普通队列最大的区别就在于它添加元素的方法
对于一个最小优先队列而言,它是根据优先级值从小到大排列的
因此我们需要改造一下 首先我们需要创建一个优先节点类 因为,队列中的元素有值和优先级两个属性,因此用类来实现
在创建元素的时候,我们只需要 接下来实现一个
这样一个优先队列就实现了,其他方法和普通队列一致 五、循环队列另一个修改版的队列:循环队列。循环队列就是一圈一圈的,首尾相连的 它和普通队列的区别就是循环队列头尾相连 我们通过一个经典的击鼓传花游戏来介绍
类似于上图,输入的数字是 7 ,第一轮 代码实现
这样一个击鼓传花的游戏就设计好了,你知道最终的赢家是谁吗? 六、LeetCode 实战933. 最近的请求次数
解题思路
AC 代码
📖 总结在这篇文章中,我们从实现一个普通队列开始,将来优先队列,循环队列,最后 AC 了一道算法题,还是很有收益的~大概需要掌握以下内容
本文关于队列的内容就到这里结束了,相信你一定能从中学到很多东西。下一篇文章将带你探索集合的奥秘。 本专栏的其他内容 从这里开始 👉 【化解数据结构】从这里开启数据结构和算法 欢迎大家关注本专栏,持续关注最新文章~
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 10:48:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |