题目:
请你实现一个队列(queue),支持如下操作:
push(x)
:向队列中加入一个数 x。
pop()
:将队首弹出。如果此时队列为空,则不进行弹出操作,并输出ERR_CANNOT_POP
。query()
:输出队首元素。如果此时队列为空,则输出ERR_CANNOT_QUERY
。
size()
:输出此时队列内元素个数。
队列是一种数据结构,用于存放有顺序的数据,先存入的数据会被放在队列顶部。在队列中的元素不能改变原有顺序,对于队列底部的数据就是最后存放的数据。如果以队列顶部的元素的视角,整个容器就像是排队时候排起的长队,先来的站在离顶端近的地方,后来的站在离顶端远的地方。
STL:
C++标准库中内置了<queue>容器,可以模拟队列的操作。需调用<queue>头文件。
STL中队列的一些基础操作:
queue<int>q | 创建一个队列 |
q.front() | 访问队列的第一个元素 |
q.pop() | 删除队列的最后一个元素 |
q.push() | 往队列末尾加入元素 |
q.empty() | 判断队列是否为空 返回0为非空,返回1为空 |
q.size() | 返回队列内元素个数 |
#include <iostream>
#include <queue>
typedef long long ll;
typedef unsigned long long ull;
const int M = 10005;
using namespace std;
int n, t;
queue<ull>q;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--) {
cin >> n;
if (n == 1) {
int x;
cin >> x;
q.push(x);
} else if (n == 2) {
if (q.empty())
cout << "ERR_CANNOT_POP" << '\n';
else
q.pop();
} else if (n == 3) {
if (q.empty())
cout << "ERR_CANNOT_QUERY" << '\n';
else
cout << q.front() << '\n';
} else if (n == 4)
cout << q.size() << '\n';
}
}