C/C++数据结构之队列基础

概述

与前面几篇文章中介绍的栈不同,栈是后进先出,而队列是先进先出。队列最直观的例子就是:人们在银行、餐厅或售票窗口前排队等候服务。最早到达的人会最先得到服务,这与队列的操作原则基本一致。

原理

队列作为一种基础的数据结构,遵循先进先出(FIFO, 即First-In-First-Out)的原则。其核心概念主要包括如下三点。

1、先进先出。队列的基本特性是遵循先进先出的原则,这意味着,最先加入队列的元素会首先被移除。

2、入队。向队尾添加一个元素,这是将新元素加入队列的操作,保证了该元素会在所有先前加入的元素之后被处理。

3、出队。从队首移除一个元素,这是从队列中取出下一个待处理元素的操作,确保了根据FIFO原则选择正确的元素进行处理。

我们可以把队列想象成这样一个箱子:它有两个口,分别叫做队首和队尾;所有东西都必须从队首这个口进去,从队尾那个口出来。放东西进去,叫入队(Enqueue)。拿东西出来,叫出队(Dequeue)。

在下面的表格中,我们在不同时间对箱子做了不同的动作。可以看到,越先放进箱子里的东西,越早被拿出来。

时间 动作 箱子里的内容
第1秒 Enqueue A [A]
第2秒 Enqueue B [A, B]
第3秒 Enqueue C [A, B, C]
第4秒 Dequeue [B, C] → 弹出的是A
第5秒 Dequeue [C] → 弹出的是B

STL中的队列

在C++ STL标准模板库中,已经提供了队列这种数据结构,即std::queue。如何使用std::queue,可以参考下面的示例代码。

cpp 复制代码
#include <iostream>
#include <queue>

using namespace std;

int main()
{
    queue<int> q;

    q.push(66);
    q.push(77);
    q.push(88);

    while (!q.empty())
    {
        cout << q.front() << " ";
        q.pop();
    }

    return 0;
}

总结

队列是一种遵循先进先出原则的线性数据结构,适用于需要按照顺序处理任务的场景,广泛应用于操作系统、网络通信、算法设计等多个领域。在C/C++中,队列可以通过数组或链表来实现,我们会在后续的文章中专门进行介绍。

相关推荐
CHANG_THE_WORLD33 分钟前
C语言中的 %*s 和 %.*s 和C++的字符串格式化输出
c语言·c++·c#
消失的旧时光-19431 小时前
C语言对象模型系列(四)《Linux 内核里的 container_of 到底是什么黑魔法?》—— 一篇讲透 Linux 内核的“对象模型”核心技巧
linux·c语言·算法
螺丝钉的扭矩一瞬间产生高能蛋白2 小时前
QT的C++接口基础用法
c++·qt·嵌入式软件·嵌入式linux·linux应用
2501_931803752 小时前
Go:一门为解决C语言痛点而生的现代语言
c语言·开发语言·golang
智者知已应修善业2 小时前
【51单片机模拟生日蜡烛】2023-10-10
c++·经验分享·笔记·算法·51单片机
智者知已应修善业2 小时前
【51单片机如何让LED灯从一亮到八,再从八亮到一】2023-10-13
c++·经验分享·笔记·算法·51单片机
qeen872 小时前
【数据结构】二叉树相关经典函数C语言实现
c语言·数据结构·c++·笔记·学习·算法·二叉树
良木生香3 小时前
【C++初阶】STL——List从入门到应用完全指南(1)
开发语言·数据结构·c++·程序人生·算法·蓝桥杯·学习方法
aqiu1111113 小时前
【并查集专题top】
c++·算法