【数据结构】队列:定义、顺序队列与链式队列
考点频率★★★★★数据结构必考选择题常考循环队列的判空/判满条件难度⭐⭐⭐建议重点理解队列的FIFO特性掌握循环队列中front和rear指针的含义以及判空、判满的条件判断1️⃣ 什么是队列队列Queue是一种操作受限的线性表。它的核心特征是只允许在表的一端进行插入在另一端进行删除。队尾Rear允许插入的一端队头Front允许删除的一端核心特性先进先出FIFOFirst In First Out——最先进入队列的元素最先被移出。打个比方队列就像食堂打饭的排队。新来的人站在队伍末尾入队队伍最前面的人打完饭离开出队。先来的人先打饭后来的人后打饭——这就是FIFO。队列在计算机系统里非常常见CPU的进程调度、打印机任务队列、键盘缓冲区……都是队列的应用。2️⃣ 队列的基本操作操作含义时间复杂度入队Enqueue将元素插入到队尾O(1)O(1)O(1)出队Dequeue移除队头元素并返回O(1)O(1)O(1)取队头Front / Peek查看队头元素但不移除O(1)O(1)O(1)判空IsEmpty检查队列是否为空O(1)O(1)O(1)判满IsFull检查队列是否已满顺序队列O(1)O(1)O(1)3️⃣ 顺序队列数组实现3.1 普通顺序队列的“假溢出”问题用数组实现队列时我们使用两个指针front指向队头元素rear指向队尾元素的下一个位置#defineMAXSIZE100typedefstruct{intdata[MAXSIZE];intfront;// 队头指针intrear;// 队尾指针指向下一个空闲位置}SeqQueue;入队操作data[rear] 元素; rear出队操作元素 data[front]; front问题随着入队和出队的进行front和rear都在不断向后移动。当rear MAXSIZE时即使数组前面还有空闲位置因为出队释放了空间也无法再入队了。这就是假溢出。3.2 循环队列解决假溢出核心思想把数组想象成一个首尾相连的环。当rear到达数组末尾时下一步就绕回到数组开头。关键约定软考必考约定项说明front指向队头元素的位置rear指向队尾元素的下一个位置判空front rear判满(rear 1) % MAXSIZE front元素个数(rear - front MAXSIZE) % MAXSIZE⚠️注意循环队列中为了区分“空”和“满”我们牺牲一个存储单元——当(rear1) % MAXSIZE front时判满此时实际上还有一个空位没有放数据。入队操作if((rear1)%MAXSIZEfront){// 队列已满报错}data[rear]元素;rear(rear1)%MAXSIZE;出队操作if(frontrear){// 队列为空报错}元素data[front];front(front1)%MAXSIZE;为什么牺牲一个空间因为我们无法区分front rear到底代表“队列为空”还是“队列为满”。如果不牺牲这个空间两种状态的条件就会完全一样。牺牲一个空间后“满”的条件变成了(rear1)%MAXSIZE front和“空”的条件front rear区分开了。4️⃣ 链式队列链表实现4.1 核心结构链式队列用单链表实现队头是链表的头节点队尾是链表的尾节点。// 队列节点typedefstructQNode{intdata;structQNode*next;}QNode;// 链式队列记录队头和队尾指针typedefstruct{QNode*front;// 队头指针QNode*rear;// 队尾指针}LinkQueue;4.2 基本操作入队在队尾插入新节点QNode*newNode(QNode*)malloc(sizeof(QNode));newNode-data元素;newNode-nextNULL;if(rearNULL){// 队列为空frontrearnewNode;}else{rear-nextnewNode;rearnewNode;}出队移除队头节点if(frontNULL){// 队列为空}QNode*tempfront;元素temp-data;frontfront-next;if(frontNULL){rearNULL;// 队列变空}free(temp);4.3 链式队列的优缺点优点缺点容量动态增长无假溢出问题每个节点需要额外的指针空间不需要预先分配连续空间存储密度低5️⃣ 循环队列 vs 链式队列对比表对比项循环队列顺序链式队列底层结构数组单链表容量固定需预先分配动态增长假溢出问题通过循环解决不存在判空条件front rearfront NULL判满条件(rear1) % MAXSIZE front无受内存限制存储密度高低适用场景元素个数可预知元素个数不可预知6️⃣ 经典例题例题1循环队列判空判满某循环队列的数组大小为 6front 2rear 5则队列中的元素个数为 。A. 2B. 3C. 4D. 5解析元素个数 (rear - front MAXSIZE) % MAXSIZE (5 - 2 6) % 6 9 % 6 3。选B。例题2循环队列判满某循环队列的数组大小为 8若front 3则rear为多少时表示队列已满A. 2B. 3C. 4D. 6解析判满条件为(rear 1) % 8 front即(rear 1) % 8 3→rear 2。选A。例题3判断链式队列不存在“假溢出”问题因为它的存储空间是动态分配的。 解析正确。7️⃣ 记忆口诀队列先进先出队尾入队头出。循环队列看指针判空判满要分清。front rear为空(rear1)%max front为满。元素个数公式记(rear-frontmax)%max。8️⃣ 小测验评论区对答案某循环队列的数组大小为 10front 7rear 2则队列中的元素个数为 。A. 3B. 4C. 5D. 6本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #队列 #循环队列 #链式队列 #数据结构 #软考备考

相关新闻

CAD外部参照变暗问题解析:褪色度调整与显示优化全攻略

CAD外部参照变暗问题解析:褪色度调整与显示优化全攻略

1. 先搞清楚“外部参照变暗”到底是怎么回事 在CAD里用外部参照,最常遇到的一个问题就是:参照进来的图形颜色很淡,线条发虚,看起来像蒙了一层灰。这其实不是文件坏了,也不是参照丢失,而是CAD为了区分当前图…

2026/10/14 13:17:39 阅读更多 →
多线程多窗口应用架构设计:模块化解耦与消息通信实践

多线程多窗口应用架构设计:模块化解耦与消息通信实践

如果你正在开发一个需要同时处理多个窗口、多个线程的桌面应用,比如自动化测试工具、数据采集系统、或者复杂的交易软件,你可能会遇到这样的困境:窗口和线程的管理代码像意大利面一样纠缠在一起,加一个新功能就可能导致整个程序崩…

2026/10/15 11:14:54 阅读更多 →
游戏物理引擎中浮空胶囊抽搐Bug分析与解决方案

游戏物理引擎中浮空胶囊抽搐Bug分析与解决方案

1. 浮空胶囊技术概述与抽搐Bug现象浮空胶囊(Floating Capsule)是一种常见的3D游戏物理系统实现方式,主要用于角色控制器与环境的交互检测。它本质上是一个垂直方向的圆柱体碰撞体,顶部和底部带有半球形封盖,形状类似医…

2026/10/9 19:30:17 阅读更多 →

最新新闻

context-mode:一条命令实现多项目开发上下文的无缝切换

context-mode:一条命令实现多项目开发上下文的无缝切换

说实话,这个项目的源头特别朴素:我在同时维护两个项目,一个是Java后端的微服务,一个是Python数据分析脚本。每天最崩溃的不是写代码,而是切换上下文——cd到对应目录、激活虚拟环境、设置环境变量、加载一堆alias、还得…

2026/10/15 13:23:54 阅读更多 →
C++20实现《我的世界》核心机制与性能优化

C++20实现《我的世界》核心机制与性能优化

1. 项目背景与核心目标用C复刻《我的世界》这样的沙盒游戏,对开发者来说是个极具挑战性又充满成就感的项目。这个经典游戏的核心魅力在于其无限生成的体素世界和高度自由的建造系统。作为从2011年就开始接触游戏开发的程序员,我决定用现代C20标准库配合O…

2026/10/15 13:23:54 阅读更多 →
context-mode:基于SQLite FTS5的本地化上下文管理范式

context-mode:基于SQLite FTS5的本地化上下文管理范式

1. 什么是 context-mode:一个被严重低估的本地化上下文处理范式 “context-mode”这个词最近在开发者社区里频繁出现,但它既不是某个主流框架的内置模块,也不是 RFC 标准里的正式术语——它本质上是一种 面向本地知识库与实时交互场景的上下…

2026/10/15 13:23:54 阅读更多 →
MCP协议中context-mode的本质与SQLite上下文计算实践

MCP协议中context-mode的本质与SQLite上下文计算实践

1. “context-mode”不是功能开关,而是MCP协议中上下文协商的运行态标识你第一次在IDE插件日志里看到context-mode: active,或者在调试Codex接入蓝湖的请求头里抓到X-MCP-Context-Mode: full,大概率会下意识把它当成一个可配置的布尔开关——…

2026/10/15 13:23:54 阅读更多 →
MoE与MLA机制解析:KV缓存压缩与推理落地避坑指南

MoE与MLA机制解析:KV缓存压缩与推理落地避坑指南

简介:这份资源系统解析DeepSeek大模型的技术体系与行业影响,面向AI研究者、开发者、投资人和关注大模型落地的行业专家,帮助读者理解MoE架构与MLA机制如何协同提升模型性能。内容覆盖DeepSeek从诞生背景、公司渊源到R1、V3等标志性成果的实现…

2026/10/15 13:23:54 阅读更多 →
MapLibre GL JS:高性能Web地图开发指南

MapLibre GL JS:高性能Web地图开发指南

1. 项目概述:MapLibre GL JS 是什么?MapLibre GL JS 是一个开源的 JavaScript 库,用于在网页中嵌入高性能、可定制的交互式地图。它基于 WebGL 技术构建,能够流畅渲染大量地理数据,支持矢量切片、3D 地形等现代地图功能…

2026/10/15 13:22:53 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →