使用数组模拟时长这个样子:
代码:
#include <iostream>
using namespace std;const int N = 1e5 + 10;// 数组q相当于队列;
// hh是队头指针,始终指向队头
// tt是队尾指针,始终指向队尾
int q[N], hh, tt = -1;// 队尾插入元素
void push(int x)
{// 队尾指针先向后移动一格,再存储新的队尾元素 q[ ++ tt] = x;
}// 队头弹出元素
void pop()
{// 队头指针向后移动一格,代表弹出队头元素hh ++ ;
}// 判断队列是否为空
bool empty()
{// 队头指针如果大于队尾指针,代表队列为空return hh > tt;
}// 查询队头元素
int query()
{// 队头指针始终指向队头元素; 查询队尾: q[tt];return q[hh];
}int main()
{int m;cin >> m;while (m -- ){string op;cin >> op;if (op == "push"){int x;cin >> x;push(x);}else if (op == "pop"){pop();}else if (op == "empty"){cout << (empty() ? "YES" : "NO") << endl;}else if (op == "query"){cout << query() << endl;}}return 0;
}