数据结构与算法学习笔记----队列
数据结构与算法学习笔记----队列
@@ author: 明月清了个风
@@ last edited: 2024.11.22
Acwing 828. 模拟队列
实现一个队列,队列初始为空,支持四种操作:
push x
向栈顶插入一个数x
;pop
从队头弹出一个数;empty
判断队列是否为空query
查询队头元素
现在要对该队列进行 M M M次操作,其中的每个操作3和操作4都要输出相应的结果
输入格式
第一行包含整数 M M M,表示操作次数。
接下来 M M M行,每行包含一个操作指令。
输出格式
对于每个query
和empty
操作都要输出一个查询结果,每个结果占一行。
其中,empty
操作的查询结果为YES
或NO
,query
操作的查询结果为一个整数,表示队头元素。
数据范围
1 ≤ M ≤ 1 0 5 1 \leq M \leq 10^{5} 1≤M≤105,
1 ≤ x ≤ 1 0 9 1 \leq x \leq 10^{9} 1≤x≤109
代码
#include <iostream>
using namespace std;
const int N = 100010;
int q[N], hh, tt = -1;
int main()
{
int n;
cin >> n;
while(n --)
{
string op;
int x;
cin >> op;
if(op == "push")
{
cin >> x;
q[++ tt] = x;
}
else if(op == "pop") hh ++;
else if(op == "empty") cout << (hh <= tt ? "NO" : "YES") <<endl;
else cout << q[hh] << endl;
}
return 0;
}