news 2026/5/9 15:11:37

队列核心:FIFO原理与实战应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
队列核心:FIFO原理与实战应用

一、队列核心概念

队列是先进先出 FIFO线性结构

  • 队尾:只允许入队
  • 队头:只允许出队
  • 先进入的元素先出去,后进入后出去

生活类比:排队买票、食堂打饭、消息排队处理。

二、队列基础五大操作

  1. push:队尾入队
  2. pop:队头出队
  3. front:获取队头元素
  4. back:获取队尾元素
  5. empty /size:判空、获取元素个数

三、C++ STL queue 快速使用

头文件:

#include <queue> using namespace std;

基础示例:

queue<int> q; q.push(10); q.push(20); q.push(30); cout << "队头:" << q.front() << endl; cout << "队尾:" << q.back() << endl; q.pop(); // 弹出队头 cout << "出队后队头:" << q.front() << endl; if(q.empty()) cout << "队列为空";

四、普通顺序队列的缺陷

普通数组队列:出队后前面空间无法复用,造成假溢出解决方式:循环队列,头尾指针环形绕圈,重复利用空间

五、手写循环队列(面试必背)

核心思路:

  • 数组固定容量
  • front 指向队头
  • rear 指向队尾下一个位置
  • 留一个空位区分「满」和「空」

完整实现代码

#include <iostream> using namespace std; const int MAXN = 5; struct MyCirQueue { int arr[MAXN]; int front; // 队头 int rear; // 队尾下一位 // 初始化 MyCirQueue() { front = 0; rear = 0; } // 判空 bool empty() { return front == rear; } // 判满 bool full() { return (rear + 1) % MAXN == front; } // 入队 bool push(int val) { if(full()) return false; arr[rear] = val; rear = (rear + 1) % MAXN; return true; } // 出队 bool pop() { if(empty()) return false; front = (front + 1) % MAXN; return true; } // 取队头 int getFront() { return arr[front]; } };

六、队列经典应用场景

  1. BFS 广度优先搜索(二叉树层序、图最短路径)
  2. 消息队列、任务排队
  3. 打印机任务调度
  4. 滑动窗口、单调队列(后续专项精讲)
  5. 优先队列(堆)底层衍生

七、栈 vs 队列 一句话区分

  • 栈:后进先出叠盘子
  • 队列:先进先出排队

八、新手易错点

  1. 混淆栈和队列进出规则
  2. 循环队列不会用%取模环形移动
  3. 不预留一个空位,无法区分队空和队满
  4. 队头队尾指针移动方向搞反

九、今日总结

  1. 队列特性:先进先出 FIFO
  2. 熟练掌握 STL queue 日常刷题用法
  3. 手写循环队列是面试高频考点,记住取模环形逻辑
  4. 队列是 BFS、层序遍历、滑动窗口的基础
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 15:11:32

CANN PTO-ISA开发模式详解

开发模式详解 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend p…

作者头像 李华
网站建设 2026/5/9 15:10:20

cann/hccl HCCL网卡配置说明

HCCL_SOCKET_IFNAME 【免费下载链接】hccl 集合通信库&#xff08;Huawei Collective Communication Library&#xff0c;简称HCCL&#xff09;是基于昇腾AI处理器的高性能集合通信库&#xff0c;为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…

作者头像 李华
网站建设 2026/5/9 15:01:31

LSTM+云原生:O-RAN网络智能异常检测工程实践

1. 项目概述与核心价值最近在搞O-RAN网络运维的朋友&#xff0c;估计都遇到过同一个头疼的问题&#xff1a;网络里那些稀奇古怪的异常&#xff0c;比如基站性能突然跳水、切片资源分配异常、CU/DU之间接口时延飙升&#xff0c;总是事后才被发现。传统的基于固定阈值的告警系统&…

作者头像 李华
网站建设 2026/5/9 14:50:32

动态域名解析工具diny:基于Cloudflare API的轻量级DDNS解决方案

1. 项目概述&#xff1a;一个轻量级、可定制的动态域名解析工具最近在折腾个人服务器和家庭网络服务时&#xff0c;我又一次被动态公网IP的问题给绊住了。相信很多自己搭网站、建NAS或者跑一些自研服务的朋友都深有体会&#xff1a;运营商给的公网IP说变就变&#xff0c;一旦IP…

作者头像 李华