队列 Queue
队列(Queue)是一种线性数据结构,它遵循“先进先出”(FIFO,First In First Out)原则,即第一个进入队列的元素将是第一个被移除的元素。队列的结构像排队的人群,先到的人先得到服务。 队列的特点: 先进先出(FIFO):队列的访问顺序遵循先进先出的原则,最先加入的元素最先被移除。 操作限制:队列只允许在一端进行插入操作(称为队尾),只允许在另一端进行删除操作(称为队头)。 存储结构:队列可以使用数组或链表来实现。 队列的常见操作: enqueue(入队):将元素加入到队列的尾部。 dequeue(出队):从队列的头部移除元素,并返回该元素的值。 peek(或 front):查看队列头部的元素,但不移除它。 isEmpty:检查队列是否为空。 size:返回队列中元素的个数。 队列的应用: 任务调度:操作系统使用队列来管理进程调度。队列用于存放等待执行的任务,系统会按照先进先出的顺序执行这些任务。 打印队列:在打印机中,打印任务通常以队列的形式管理。先发出的打印任务先被处理。 消息队列:在计算机网络和多线程编程中,消息队列常用来管理不同任务或进程间的通信。消息按照先进先出的顺序进行传递。 广度优先搜索(BFS):广度优先搜索算法(BFS)使用队列来遍历图或树的节点。 队列的示例(C++): #include <iostream> #include <queue> // 引入queue头文件 using namespace std; int main() { queue<int> q; // 创建一个空队列 // enqueue操作:入队 q.push(10); // 入队10 q.push(20); // 入队20 q.push(30); // 入队30 // peek操作:查看队头元素 cout << "队头元素: " << q.front() << endl; // 输出: 10 // dequeue操作:出队 q.pop(); // 出队10 // 打印队头元素 cout << "出队后, 队头元素: " << q.front() << endl; // 输出: 20 // isEmpty操作:检查队列是否为空 if (!q.empty()) { cout << "队列不是空的!" << endl; // 输出: 队列不是空的! } // size操作:获取队列的大小 cout << "队列的大小: " << q.size() << endl; // 输出: 2 return 0; } 代码解析: push:将元素添加到队列的尾部。 front:查看队列头部元素的值。 pop:从队列的头部移除元素。 empty:检查队列是否为空。 size:返回队列中的元素个数。 队列的优缺点: 优点: ...