1队列的概念
队列是一种特殊的线性表, 它只允许在表的前端进行删除()操作,而在表的后端进行插入操作
队列中元素都遵循"先进先出"(First In First Out)的规则.
常规操作有:
函数 | 功能 |
---|---|
front() | 取队列第一个元素 |
push(X) | 将X入队 |
pop() | 弹出队首元素 |
empty() | 判断队列是否为空(空为真) |
size() | 返回队列中元素个数 |
栈与队列是非常相似的, 它们的规则不同(栈是 FILO, 队列是 FIFO).
2队列的应用
队列主要的作用就是模拟了吧(作者认为的), 用一道题来说明一下吧.
卡片游戏
题目: 桌子上有一叠牌,从第一张牌(即位于顶面的牌)开始从上到下依次编号为 1 ~ n,当至少还剩下两张牌时进行以下操作:把第一张扔掉,然后把新的一张放到整叠牌的最后。
输入 ,输出每次扔掉的牌,以及最后剩下的牌。
纯模拟…
#include <bits/stdc++.h>
using namespace std;
int main() {
queue<int> q;
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++) q.push(i);
while(!q.empty()) {
printf("%d ", q.front()); q.pop();
if(q.size() > 1) {
int v = q.front(); q.pop();
q.push(v);
}
}
return 0;
}
队列还常用于BFS(Breadth First Search, 宽(广)度优先搜索算法), 点这里查看有关BFS的知识.