题目描述
- 实现一个队列,队列初始为空,支持四种操作:
push x
– 向队尾插入一个数x
;pop
– 从队头弹出一个数;empty
– 判断队列是否为空;query
– 查询队头元素。
- 现在要对队列进行
M
个操作,其中的每个操作3
和操作4
都要输出相应的结果。
输入格式
- 第一行包含整数
M
,表示操作次数。 - 接下来
M
行,每行包含一个操作命令,操作命令为push x
,pop
,empty
,query
中的一种。
输出格式
- 对于每个
empty
和query
操作都要输出一个查询结果,每个结果占一行。 - 其中,
empty
操作的查询结果为YES
或NO
,query
操作的查询结果为一个整数,表示队头元素的值。
数据范围
1 ≤ M ≤ 100000
,1 ≤ x ≤ 10^9
,- 所有操作保证合法。
实现代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int simulated_queue[N];
int head = 0, tail = 0;
inline void push(void)
{
int x;
cin >> x;
simulated_queue[tail] = x;
tail ++;
}
inline void pop(void)
{
head ++;
}
inline void empty(void)
{
if(head == tail) cout << "YES" << endl;
else cout << "NO" << endl;
}
inline void query(void)
{
cout << simulated_queue[head] << endl;
}
int main(void)
{
int M;
cin >> M;
for(int i = 0; i < M; ++ i)
{
string operation;
cin >> operation;
if(operation == "push") push();
else if(operation == "pop") pop();
else if(operation == "empty") empty();
else if(operation == "query") query();
}
return 0;
}