模拟队列
队列概述
队列是先进先出表,我们这里依旧采用数组模拟
数组模拟由以下构成
int q[N], hh, tt = -1;
$hh$表示队头,$rr$表示队尾,$q[N]$是队列
这里数组下表从$0$开始使用
队列常见有四种操作:
1. 入队
q[ ++ tt] = x;
2. 出队
hh ++ ;
3. 判空
若 $hh <= tt$则为空,反之不空
4.查看队头或者队尾元素
队头元素 $q[hh]$
队尾元素 $q[tt]$
代码
#include <iostream>
using namespace std;
const int N = 100010;
int m;
int q[N], hh, tt = -1;
int main()
{
cin >> m;
while (m -- )
{
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;
}