🧮 队列 (Queue)

🧮 队列 (Queue)

难度 / Difficulty: 简单 (Easy)
分类 / Category: 数据结构 (Data Structure)
操作复杂度 / Operations: 全部 O(1)
空间复杂度 / Space Complexity: O(n)


📖 算法简介 / Introduction

队列是一种先进先出(First In First Out, FIFO)的数据结构。就像排队买东西,先来的人先服务。

A queue is a First In First Out (FIFO) data structure. Like a line at a store — people who arrive first are served first.

核心操作:Enqueue(入队)Dequeue(出队)


💡 算法原理 / Principle

核心特性

  • FIFO:最先进入队列的元素最先出来
  • 一端进,另一端出:队尾入队,队头出队
  • 操作受限:不支持随机访问中间元素

基本操作

操作 说明 时间复杂度
enqueue(x) 将元素 x 加入队尾 O(1)
dequeue() 移除队头元素并返回 O(1)
front() 查看队头元素(不删除) O(1)
empty() 判断队列是否为空 O(1)

📝 代码实现 / Implementation

基础队列

from collections import deque

class Queue:
    def __init__(self):
        self.queue = deque()
    
    def enqueue(self, x):
        self.queue.append(x)
    
    def dequeue(self):
        if self.queue:
            return self.queue.popleft()
        return None
    
    def front(self):
        if self.queue:
            return self.queue[0]
        return None
    
    def empty(self):
        return len(self.queue) == 0
    
    def size(self):
        return len(self.queue)

✨ 示例 / Example

操作序列:
enqueue(1)  →  [1]
enqueue(2)  →  [1, 2]
enqueue(3)  →  [1, 2, 3]
dequeue()   →  返回 1,队列变为 [2, 3]
dequeue()   →  返回 2,队列变为 [3]
front()     →  返回 3,队列仍为 [3]

🎯 适用场景 / Scenarios

  • 任务调度 — 操作系统任务队列、打印队列
  • 层次遍历(BFS) — 用队列实现广度优先搜索
  • 消息队列 — 异步通信、任务解耦
  • 资源池 — 连接池、线程池管理
  • 流量控制 — 限流、缓冲

Task scheduling (OS, printers), BFS implementation, Message queues (async communication), Resource pools (connection pools), Traffic control (rate limiting).


🔄 与栈对比 / Comparison with Stack

特性 队列
全称 Stack Queue
简称 LIFO FIFO
操作端 仅栈顶 一端进,另一端出
应用 递归、括号匹配 BFS、任务调度
实现方式 push/pop enqueue/dequeue

🔄 优先队列 / Priority Queue

普通队列按 FIFO 顺序出队,优先队列按优先级出队,优先级最高的先出队。

实现方式:通常用堆(Heap)实现,O(log n) 入队和出队。

import heapq

pq = []
heapq.heappush(pq, (priority, item))
heapq.heappop(pq)  # 优先级最高的先出

*本文由 AI 自动生成 Generated by AI*

🔒 隐私说明:网站使用 Google AdSense 投放广告,Google 可能使用 Cookie 进行访客分析。了解详情请阅读我们的 隐私政策

🔒 Privacy Notice: This site uses Google AdSense to serve ads. Google may use cookies for visitor analytics. See our Privacy Policy for details.