当前位置: 首页 > news >正文

Linux环境下的C语言编程(三十八)

一、队列的概念

1. 先进先出(FIFO)

队列遵循FIFO原则,这是队列最基本的特性。

特征为
  • 先来的人先服务:最早加入队列的元素最早被处理

  • 保持顺序不变:元素的出队顺序完全由入队顺序决定

2. 线性结构

队列是一种线性数据结构,元素按照严格的线性顺序排列,每个元素最多有一个直接前驱和一个直接后继

3. 操作受限的访问

与数组可以随机访问不同,队列对元素的访问有严格限制:

  • 只能从一端(队头)删除元素

  • 只能从另一端(队尾)添加元素

  • 不能直接访问或修改队列中间的元素

4. 动态增长与收缩

队列的大小在运行时动态变化

  • 入队时增加元素,队列变长

  • 出队时移除元素,队列变短

  • 队列可能为空,也可能达到最大容量

二、队列的抽象图示

1. 队列的基本结构

入队方向 (Enqueue) → [][][][][][] ← 出队方向 (Dequeue) ↑ ↑ 队尾 队头 (Rear) (Front)

图示说明:

  • 水平方向表示队列,左边是队尾(插入端),右边是队头(删除端)

  • 新元素总是从队尾加入

  • 元素总是从队头离开

  • 箭头方向表示数据的流动方向

2. 队列操作动态演示

初始状态(空队列):
队尾 → | | ← 队头 空队列
步骤1:元素A入队
队尾 → | A | ← 队头 队头/队尾都指向A
步骤2:元素B入队
队尾 → | B | A | ← 队头 ↑ ↑ 队尾 队头
步骤3:元素C入队
队尾 → | C | B | A | ← 队头 ↑ ↑ 队尾 队头
步骤4:元素A出队
队尾 → | C | B | | ← 队头 ↑ ↑ 队尾 队头 (元素A已出队)
步骤5:元素D入队
队尾 → | D | C | B | | ← 队头 ↑ ↑ 队尾 队头

3. 循环队列的抽象图示

当使用数组实现队列时,常用循环队列来解决空间浪费问题:

初始状态:

索引: 0 1 2 3 4 [ ] [ ] [ ] [ ] [ ] ↑ ↑ front rear (都指向0)

入队A、B、C后:

索引: 0 1 2 3 4 [A] [B] [C] [ ] [ ] ↑ ↑ front rear

出队A后:

索引: 0 1 2 3 4 [ ] [B] [C] [ ] [ ] ↑ ↑ front rear

入队D、E后(rear绕回起点):

索引: 0 1 2 3 4 [E] [B] [C] [D] [ ] ↑ ↑ rear front (rear在front前面表示队列已满或循环)
http://www.cnnetsun.cn/news/26599.html

相关文章:

  • Linux环境下的C语言编程(三十九)
  • 毕业设计实战:基于SSM+MySQL的图书商城管理系统设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • 毕业设计实战:基于SSM+MySQL的问卷调查系统,避开这些坑轻松搞定毕设!
  • 非正弦反电动势下PMSM与BLDC无感控制算法研究:自适应谐波估计降低转矩脉动
  • 单相并网逆变器Matlab仿真:离网仿真与PLL锁相环研究,电感电流谐波含量THD优化仿真效果
  • Kate 高级文本编辑器 v26.03.70 官方中文版
  • yadm 完整使用指南:从入门到精通掌握点文件管理
  • 基于Web的大学生体测管理系统设计与实现中期(1)
  • 代码随想录算法训练营第四十三天 | 98. 所有可达路径
  • GBase 8a数据库集群硬件部署安装建议
  • GBase数据库护航国家管网SCADA系统四年无中断平稳运行
  • 一文搞定 AI 智能体架构设计的9大核心技术
  • 计算机毕业设计springboot基于JAVA的校园图书馆管理系统的设计与实现 基于Spring Boot框架的校园图书馆信息化管理系统开发与应用研究 利用Spring Boot与Java技术构建的高
  • 数据结构==LRU Cache ==
  • AMD ROCm平台上的YOLOv8目标检测:从入门到精通的5步优化指南
  • 如何让GPT-5.2成为你职场上的得力助手?这5大功能必看!
  • 如何快速掌握YOLOv12:实时目标检测的完整实践指南
  • PINNs-Torch:用PyTorch轻松实现物理信息神经网络
  • JavaScript学习笔记:5.函数
  • Apache Kvrocks数据库部署实战:从零到一的完整搭建教程
  • 16、远程系统管理与安全防护指南
  • 施耐德BMENOC0321C:高性能模块化驱动控制器(增强通信版)
  • 金融人转AI:从入门到上手,我的“证书认证+技能”学习路线分享
  • 模块化多电平变换器MMC(20子模块、21电平,工作条件220kV(AC)/400kV(DC)...
  • 生态共舞!恭喜10家企业荣获“2025龙蜥社区最佳联合解决方案奖”
  • Java常见开发框架大比拼:Jeesite 、jeecgBoot、smartAdmin、ruoyi
  • IDEA(2020版)实现HttpServletRequest对象
  • 跨平台开发框架选型指南:Uniapp、React Native、Flutter
  • 数字孪生软件开发公司