队列(笔记)

news2024/12/26 1:44:45

文章目录

  • 1. 概念
  • 2. 实现方式
  • 3. 复杂度
    • 其他
  • 4. 实际应用
  • 5. 内容出处

1. 概念

        队列:其实就是排队。像我们在银行窗口取钱、车站买车票等都可以叫队列。
        特点:队列只允许在后端(rear)进行插入操作,在前端(front)进行删除操作(即先进先出,FIFO, First-In-First-Out, 跟stack正好相反。简单来说就是谁先来先给谁办理业务,后来的人在队伍后面排队,不允许插队。
在这里插入图片描述
(上图来源:wiki)
在这里插入图片描述

2. 实现方式

1> 单链表
① 优点:链表有头指针和尾指针,这正好满足了队列的条件(只需要处理头(前端)和尾(后端),一个删除,一个插入)
② 缺点:没有index这个概念,查询中间任意一个节点的数值,都需要遍历链表,时间复杂度是O(n)
③ 使用链表实现队列的条件:只顾头尾,甚至只顾头(例如:银行办理业务时谁先来先办理谁的,不会说先挨个问一下每个人办理什么业务,突然让某个人插个队或者说因为队伍最后一个人前面的人太多,就先给最后那个人办理)
2> 动态数组
① 优点:有index这个概念,查询数组中间任意一个下标的元素,时间复杂度是O(1)。(例如:现在办理业务时,有位老人已经等很久了,考虑到老人的身体状况,可能会叫一下那个老人手中的号,先给老人办理)
② 缺点:每删除一个array[0]的元素都是o(n)的时间复杂度(因为数组中有补位这个概念的存在),不适合庞大的队伍。除此之外,如果扩容,还需要考虑复杂度震荡的问题。

3. 复杂度

在这里插入图片描述
                                        (图片来源:wiki)
① search(搜索某个元素):无论链表还是数组都需要遍历,因此平均和最差时间复杂度都是O(n)
注:搜索:给定元素判断有无或者找下标;查询:给定下标找元素
② insert:都是从后端直接插入,因此平均和最差时间复杂度都是o(1)
③ delete:都是从前端直接删除(数组先不考虑后续的补位,只说删除这个操作),因此平均和最差时间复杂度都是o(1)

其他

search:好像指的是搜索
query:指的查询
peek:常用于stack或者queue查看最顶端(或最前面)的元素

4. 实际应用

① 操作系统中的进程管理:可以控制进程执行的优先级(例如(大概过程,实际情况比这个复杂):后台同时挂着游戏和工作软件,现在想打游戏,就把游戏放在首位,CPU、显卡等硬件都先给它用;过了一会发现工作快到上交的截止日期了,马上把工作再放到首位,CPU、显卡等硬件都先给工作用。由此可见打游戏、工作这些事情可以被看作一个队伍。在计算机中,这些任务都是随机的,需要把它们存储到一个队列当中来表示它们的优先级顺序)
② 搜索算法中的广度优先算法
③ 网络编程中的缓存网络数据包:可以控制队列数据的传输速度
④ 计算机图形学中三维场景的遮挡剔除:可以提高图形的渲染效率
        由此可见,队列在计算机系统中非常重要(着重强调系统级),尤其是任务调度、进程管理方面,目的就是为了把它们排队,维护任务的执行顺序。

5. 内容出处

直面数据结构

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法刷题记录 八十五【图论的广度优先搜索理论基础】

前言 图论章节第2篇。 第1篇:记录 八十二【图论理论基础及深度优先搜索算法】; 本文:记录 八十五【图论的广度优先搜索理论基础】 一、广度优先搜索理论基础 广度优先搜索理论基础 参考链接 1.1 知识点框架 1.2 模拟广度搜索的过程 在有向…

Llama 3.1深度解析:405B、70B及8B模型的多语言与长上下文处理能力

Llama 3.1 发布了!今天我们迎来了 Llama 家族的新成员 Llama 3.1 进入 Hugging Face 平台。我们很高兴与 Meta 合作,确保在 Hugging Face 生态系统中实现最佳集成。Hub 上现有八个开源权重模型 (3 个基础模型和 5 个微调模型)。 Llama 3.1 有三种规格: …

字符串拼接和反转

定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串 调用该方法,并在控制台输出结果 例如: 数组为 int[] arr [1,2,3]; 执行方法后的输出结果为:[1,2,3] package stringdemo;public class StringDemo3 {public static void…

洋牡丹:多彩花语与深邃寓意

一、洋牡丹概述 洋牡丹,学名为花毛茛,其名称的由来颇为有趣。因花型酷似牡丹花,且从国外引入栽培,故得 “洋牡丹” 这一亲切的称呼。 洋牡丹的常见品种繁多,有单瓣和重瓣之分。单瓣的洋牡丹清新雅致,花瓣舒…

docker 最新可用镜像源地址

无论是docker桌布版本,还是linux版本通用 直接更换镜像源地址即可:亲测目前可用 { "registry-mirrors": ["https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com","https://5tqw56kt.mirror.aliyuncs.com&…

大模型基于指令的知识编辑:InstructEdit技术

人工智能咨询培训老师叶梓 转载标明出处 在知识更新和编辑方面,大模型在特定任务上表现出色,但在面对不同任务时往往力不从心,需要为每个任务单独设计编辑器,这在一定程度上限制了其应用范围。为了解决这一问题,浙江大…

二十二、状态模式

文章目录 1 基本介绍2 案例2.1 Season 接口2.2 Spring 类2.3 Summer 类2.4 Autumn 类2.5 Winter 类2.6 Person 类2.7 Client 类2.8 Client 类的运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 State ( 状态 )3.1.2 ConcreteState ( 具体的状态 )3.1.3 Context ( 上下文 )3.…

【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS开发AGV运动控制器,支持国产定制

在过去,步科更多的是为AGV客户提供单一、高性能的低压伺服核心部件产品,而现在,步科基于 CODESYS 开发了一款面向AGV机器人的特种控制器 - 青龙1号,开始提供以步科AGV运动控制器FD1X4S系列低压伺服Green系列HMI等为核心的AGV总线控…

keepalived理论--实验

一 . 高可用集群 1.1 集群类型 LB : Load Balance 负载均衡 LVS/HAProxy/nginx ( http/upstream, stream/upstream ) HA : High Availability 高可用集群 数据库、 Redis SPoF: Single Point of Failure ,解决…

2004-2023华为杯数学建模优秀参考论文

笔者整理了2004-2023年华为杯研究生数学建模全部优秀论文和赛题,内容齐全,适合将要参加建模比赛的朋友学习使用。 免费优秀论文获取联系: 建模忠哥小师妹 2004-2023历届华为杯研究生数学建模优秀论文合集:

【数学分析笔记】第2章第1节实数系的连续性(2)

2. 数列极限 2.1 实数系的连续性 2.1.3 确界存在定理 【定理2.1.1】(确界存在定理——实数系连续性定理)非空有上界的数集必有上确界,非空有下界的数集必有下确界。 【证】(写了一些我自己的理解,欢迎数院大神批评指…

Linux基础知识学习(二)

一. 常用基本命令 1. 目录管理 1> 绝对路径、相对路径 绝对路径路径的全称:C:\ProgramData\360safe\xxx.xx 比如说 360safe 目录下,那这个 xxx.xx 文件,对应我们的相对配置就 /xxx.xx cd : 切换目录命令! ./ &…

【html+css 绚丽Loading】-000001 双极乾坤盘

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

【信创】麒麟打包工具初体验

往期好文:关于信创系统(麒麟、统信、中科方德)的10个问题与答复(二) Hello,大家好啊!今天给大家带来一篇关于麒麟桌面操作系统上麒麟打包工具的介绍与使用的文章。麒麟打包工具是一款专门为麒麟…

C/C++ 不定参函数

C语言不定参函数 函数用法总结 Va_list 作用:类型定义,生命一个变量,该变量被用来访问传递给不定参函数的可变参数列表用法:供后续函数进调用,通过该变量访问参数列表 typedefchar* va_list; va_start 作用&#xff…

解决MSPM0G3507芯片锁住的问题

编译环境:Windows 开发软件:Keil 开发主控:立创的MSPM0G3507 我们在MSPM0G3507时,常为芯片锁住烦恼,常见的锁死是因为使用了ST-Link,这里展示的是使用ST-Link后芯片锁死的解决步骤。 现象&a…

MySQL数据库入门,pycharm连接数据库—详细讲解

一.安装MySQL 1.常用MySQL5.7,首先安装MySQL, (一) (二) (三) (四) (五) 2.配置环境变量 打开MySQL安装路径,在其中找到…

python:画函数积分图

《高等数学》同济大学版 P209 编写 test_diff_area.py 如下 # -*- coding: utf-8 -*- """ 函数积分图 y x^3 -x^2 -x1 """ import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Polygondef func(x):return …

人工智能的普及造成了一场能源危机,但并不是无法解决。

人工智能的普及造成了一场能源危机,但并不是无法解决。 原文链接: 点击访问我的技术博客https://ai.weoknow.comhttps://ai.weoknow.com 人工智能(AI)的爆炸式增长促使科技巨头(包括 Google、Meta、亚马逊和微软等&…

LeetCode刷题笔记第231题:2 的幂

LeetCode刷题笔记第231题:2 的幂 题目: 想法: 对输入的数值循环除以2直至数值小于等于1,如果最终的数值为1则为2的幂,小于1则不是2的幂。 class Solution:def isPowerOfTwo(self, n: int) -> bool:if n 1:retur…