码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构-线性结构-队列


    目录

    队列(Queue)

    队列的顺序存储结构

    队列的顺序存储结构 -入队

    队列的顺序存储结构 -出队

    循环队列

    队列的链式存储结构

    队列的链式存储结构-入队

    队列的链式存储结构-出队

    队列的实现(顺序存储结构和链式存储结构)


    队列(Queue)

    队列(Queue),是具有一定操作限制的线性表。只能在一端插入,在另一端删除。

    • 插入数据:入队(AddQ)
    • 删除数据:出队(DeleteQ)
    • 先进先出:First In First Out(FIFO)

    队列的抽象数据类型描述

    数据对象集:一个有0或多个元素的线性表。

    操作集:

    1. 生成长度为MaxSize的空队列
    2. 判断队列是否已满
    3. 判断队列是否已空
    4. 将元素插入队列中
    5. 将元素从队列中删除并返回

    队列的顺序存储结构

    队列的顺序存储结构组成:一个一维数组、一个记录队列头元素位置的变量front、一个记录队列尾元素的变量rear。

    • 可以声明front=0,rear=-1。每次入队rear+1,每次出队front+1。
    • rear-front=-1时,队列空。
    • rear+1=MaxSize时,队列满。

    队列的顺序存储结构 -入队

    队列的顺序存储结构 -出队

    循环队列

    经过多次的入队和出队,队尾会达到数组的限制,而对头会空出几个位置。为了更好地利用数组的空间,则引入循环队列的概念。

    • 可以声明front=0,rear=-1。每次入队rear+1,每次出队front+1。
    • 循环存入时,rear和front的值一直累加。需要确定front和rear下标时,使用front和rear与数组MaxSize取模。
    • rear-front=-1时,队列空。
    • rear-front+1=MaxSize时,队列满。

    可以看到示例图中的循环队列,下标最大为5。如果不使用循环队列概念,最多能从a1存储到a6,队列就满了。但是经过两次出队后,下标0和1的位置空了,所以a7可以入队到循环队列下标为0的位置。

    队列的链式存储结构

    队列也可以使用一个单链表实现。插入和删除操作分别在链表的两端进行。

    链表的特点是:在链表的头部,做插入、删除操作都方便;在链表的尾部,做插入操作方便,做删除操作不方便。

    • 在链表头部进行出队操作
    • 在链表尾部进行入队操作
    • 需要front和rear分别指向链的头节点的和尾节点。当front不指向任何节点时,队列为空。

    队列的链式存储结构-入队

    队列的链式存储结构-出队

    队列的实现(顺序存储结构和链式存储结构)

    待补充

  • 相关阅读:
    【精讲】vue组件开发基础、多层嵌套(内含详细注释)、vuecomponent构造函数
    ctags命令行使用笔记
    中国的云厂商那么多,为什么Salesforce只选阿里云这一个?
    Windows无法连接共享打印机,错误码:0x0000011b的解决方法
    【HarmonyOS】鸿蒙应用开发基础认证题目
    y110.第六章 微服务、服务网格及Envoy实战 -- Envoy网格安全(二一)
    从 SQL 查询优化技巧去看 h2 数据库查询原理
    在nodejs中操作数据库--express项目
    textcnn, textrnn, textrcnn, textrnn_att, dpcnn, transformer介绍
    力扣 -- 718. 最长重复子数组
  • 原文地址:https://blog.csdn.net/qq522044637/article/details/126040191
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号