队列(Queue)与栈一样,是一种线性存储结构。下面会介绍队列。
目录
1.队列的基本知识
1.1 特点
(1)队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。
(2)在队尾添加元素,在队头删除元素。
1.2.相关术语
(1)入队:队列的插入操作。
(2)出队:队列的删除操作。
1.3 操作
(1)入队: 通常命名为push()
(2)出队: 通常命名为pop()
(3)求队列中元素个数
(4)判断队列是否为空
(5)获取队首元素
1.4 分类
(1)基于数组的循环队列(循环队列)
(2)基于链表的队列(链队列)
2.队列的实现
队列通常使用标准库中的queue模板类来实现,需要包含<queue>头文件来使用它。下面用一个例子来说明如何使用队列:
#include <iostream>
#include <queue>
int main() {
std::queue<int> myQueue;
// 在队尾插入元素
myQueue.push(10);
myQueue.push(20);
myQueue.push(30);
// 访问队首元素
std::cout << "Front element: " << myQueue.front() << std::endl;
// 访问队尾元素
std::cout << "Back element: " << myQueue.back() << std::endl;
// 遍历并输出队列中的元素
while (!myQueue.empty()) {
std::cout << myQueue.front() << " ";
myQueue.pop();
}
return 0;
}
上述代码创建了一个整数类型的队列,并在队尾依次插入了三个元素:10、20和30。然后,我们通过front()函数访问队首元素(即10),通过back()函数访问队尾元素(即30)。接下来,使用empty()函数检查队列是否为空,并通过pop()函数不断将队首元素弹出并输出,直到队列为空。
3.例题
周末舞会
【题目描述】
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。
【输入】
第一行两队的人数;
第二行舞曲的数目。
【输出】
配对情况。
【输入样例】
4 6
7【输出样例】
1 1
2 2
3 3
4 4
1 5
2 6
3 1【题目来源】
用两个队列模拟男女两队人,先让两队的人入队。
舞曲数目为n。
每次循环让两队分别出队1人,这两人配对跳舞,输出这两个人的编号。
而后出队的这两个人分别入队到队尾,回到自己的队列中。
如此循环n次。
#include <bits/stdc++.h>
using namespace std;
int main()
{
queue<int> q1, q2;//q1:男士队列 q2:女士队列
int a, b, n;
cin >> a >> b >> n;
for(int i = 1; i <= a; ++i)
q1.push(i);
for(int i = 1; i <= b; ++i)
q2.push(i);
for(int i = 1; i <= n; ++i)
{
cout << q1.front() << ' ' << q2.front() << endl;//两队队头出来配对跳舞
q1.push(q1.front());//将队头的值入队到队尾
q1.pop();//队头出队
q2.push(q2.front());
q2.pop();
}
return 0;
}
创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,如果喜欢我的文章,给个关注吧!
冰焰狼 | 文
如果本篇博客有任何错误,请批评指教,不胜感激 !