- 队列(queue)是一种先进先出FIFO(first in first out)的线性表。
- 队列中,插入的一端称为队尾(back), 删除的一端称为队头(front)。
- 队列定义在<queue>头文件中。
队列类成员函数
//----容量capacity----
bool empty(); //测试是否为空队列
size_type size(); //返回队列长度
//----元素存取element access----
front(); //返回队头元素
back(); //返回队尾元素
//----队列运算operations----
void push(const T& x); //插入一个元素到队尾
void pop(); //删除队列下一个元素
例题(队列应用)
- 桌上有一叠牌,从第一张牌开始从上往下依次编号1~n。当至少还剩两张牌时进行如下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后。请输入总牌数n,输出每次扔掉的牌,以及最后剩下的两张牌。
#include<iostream>
#include<queue>
using namespace std;
int main() {
queue<int> q;
int n; cin >> n;
for(int i = 0; i < n; i++) q.push(i + 1);
while(q.size() > 2) {
cout << q.front() << " ";
q.pop();
q.push(q.front());
q.pop();
}
cout << endl;
while(!q.empty()) {
cout << q.front() << " ";
q.pop();
}
return 0;
}