B3616 【模板】队列 - 洛谷 | 计算机科学教育新生态
题目描述
请你实现一个队列(queue),支持如下操作:
push(x)
:向队列中加入一个数x
。pop()
:将队首弹出。如果此时队列为空,则不进行弹出操作,并输出ERR_CANNOT_POP
。query()
:输出队首元素。如果此时队列为空,则输出ERR_CANNOT_QUERY
。size()
:输出此时队列内元素个数。
复制Markdown
展开
输入格式
第一行,一个整数 n
,表示操作的次数。
接下来 n
行,每行表示一个操作。格式如下:
1 x
,表示将元素x
加入队列。2
,表示将队首弹出队列。3
,表示查询队首。4
,表示查询队列内元素个数。
输出格式
输出若干行,对于每个操作,按「题目描述」输出结果。
每条输出之间应当用空行隔开。
输入输出样例
输入 #1
13
1 2
1 233
2
3
4
2
3
2
3
4
2
1 144
3
输出 #1
2
1
233
ERR_CANNOT_QUERY
ERR_CANNOT_POP
144
说明/提示
样例解释
- 首先插入
2
,队首为2
,队列内元素个数为1
。 - 插入
233
,此时队首为2
。 - 弹出队首,此时队首为
233
。 - 弹出队首,此时队首为空。
- 再次尝试弹出队首,由于队列已经为空,此时无法弹出。
- 插入
1 44
,此时队首为1 44
。
数据规模与约定
对于 100% 的测试数据,满足 n≤10000,且被插入队列的所有元素值是 [1,1000000] 以内的正整数。
思路:
代码如下:
#include<iostream>
#include<queue>
using namespace std;
const int T = 1e4+10;
int arr[T];
int n;
int main(void)
{
queue<int> r;
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
while(n--)
{
int t,x;
cin >> t;
if(t == 1)
{
cin >> x;
r.push(x);
}
if(t == 2)
{
if(!r.empty())
r.pop();
else
cout << "ERR_CANNOT_POP" << '\n';
}
if(t == 3)
{
if(!r.empty())
{
int k = r.front();
cout << k << '\n';
}
else
{
cout << "ERR_CANNOT_QUERY" << '\n';
}
}
if(t == 4)
{
int len = r.size();
cout << len << '\n';
}
}
return 0;
}