找回密码
 立即注册
首页 业界区 安全 25.Acwing基础课第829题-简单-模拟队列

25.Acwing基础课第829题-简单-模拟队列

姘轻拎 4 小时前
25.Acwing基础课第829题-简单-模拟队列

题目描述

实现一个队列,队列初始为空,支持四种操作:

  • push x – 向队尾插入一个数 x;
  • pop – 从队头弹出一个数;
  • empty – 判断队列是否为空;
  • query – 查询队头元素。
现在要对队列进行 M 个操作,其中的每个操作 33 和操作 44 都要输出相应的结果。
输入格式

第一行包含整数 M,表示操作次数。
接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。
输出格式

对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。
其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。
数据范围

\(1≤M≤100000\)
\(1≤x≤10^9\)
所有操作保证合法,即不会在栈为空的情况下进行 pop 或 query 操作。
输入样例:
  1. 10
  2. push 6
  3. empty
  4. query
  5. pop
  6. empty
  7. push 3
  8. push 4
  9. pop
  10. query
  11. push 6
复制代码
输出样例:
  1. NO
  2. 6
  3. YES
  4. 4
复制代码
代码:

[code]#include #include using namespace std;const int N = 1e5+10;int q[N], hh = 0, tt = 0;// 入队:队尾插入元素void push(int x){    q[tt++] = x;}// 出队:队头删除元素void pop(){    ++hh;}// 获取队头元素int front(){    return q[hh];}// 判断队列是否为空bool empty(){    return tt == 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")        {            if(empty()) cout

相关推荐

您需要登录后才可以回帖 登录 | 立即注册