| 学习指南 EN
计算机科学 · CIE A-Level 9618 · 阅读约 15 分钟 · 更新于 2026-05-11

队列 — 计算机科学

计算机科学 · CIE A-Level 9618 · 15 min read

1. 核心概念与FIFO特性 ★★☆☆☆ ⏱ 3 min

所有标准队列操作都限制在两端进行。与链表或数组不同,默认情况下你不能访问或修改队列中间的元素。这个限制保证了FIFO特性得以维持。

Exam tip: 跟踪操作时始终明确标记哪一端是队首哪一端是队尾:交换二者是CIE考试中最常见的错误。

2. 标准队列操作 ★★☆☆☆ ⏱ 4 min

所有有效的队列实现都支持以下核心操作,每个操作的期望时间复杂度均为$O(1)$:

  • `enqueue(item)`: 向队列尾部添加新元素
  • `dequeue()`: 从队列头部移除并返回元素
  • `peek()` / `front()`: 返回队首元素的值,不将其移除
  • `isEmpty()`: Return `True` if the queue has no elements, else `False`
  • `isFull()`: Return `True` if the queue has no remaining space (fixed-size implementations only)

3. 常见队列实现 ★★★☆☆ ⏱ 5 min

METHODS COMPARED

队列最常使用两种底层结构实现,对比如下:

定长基于数组的队列

使用连续数组存储队列元素,用整数指针记录队首和队尾索引。

基于链表的队列

使用链表节点,分别用指针指向链表的队首节点和队尾节点。

循环队列是一种改进的定长数组实现,解决了删除后数组前端留下空槽无法使用的问题。当队尾索引到达数组末尾后,会环绕回数组起始位置,重复利用空槽。

Exam tip: CIE经常考察循环队列实现:记住总会留出一个空位,用于区分满队列和空队列状态。

4. 队列的应用 ★★☆☆☆ ⏱ 3 min

  • **进程调度**: 操作系统使用队列按到达顺序排序等待CPU的进程
  • **打印机假脱机**: 打印任务排队,第一个发送的任务第一个打印
  • **广度优先搜索(BFS)**: 图遍历使用队列跟踪接下来要访问的节点
  • **数据缓冲**: 队列处理异步数据传输(例如视频流,IO缓冲区)

Common Pitfalls

Why: 学习者经常混淆哪一端支持哪一种操作,破坏了FIFO特性

Why: 如果所有槽都被填满,队首等于队尾,这和空队列的条件一致,会导致逻辑错误

Why: Learners often assume elements must be shifted in array implementations, which is only true for naive non-pointer implementations

Why: 这是BFS和DFS需求的常见混淆

Quick Reference Cheatsheet

← 返回章节主页

某道题卡住了?
拍照或粘贴题目 — 小欧(我们的 AI 学习助手)会一步步讲解并配示意图。
免费试用小欧 →