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

(1) “push x” – 向队尾插入一个数x;

(2) “pop” – 从队头弹出一个数;

(3) “empty” – 判断队列是否为空;

(4) “query” – 查询队头元素。

现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的结果。

输入格式
第一行包含整数M,表示操作次数。

接下来M行,每行包含一个操作命令,操作命令为”push x”,”pop”,”empty”,”query”中的一种。

输出格式
对于每个”empty”和”query”操作都要输出一个查询结果,每个结果占一行。

其中,”empty”操作的查询结果为“YES”或“NO”,”query”操作的查询结果为一个整数,表示队头元素的值。

数据范围
1≤M≤100000,
1≤x≤109,
所有操作保证合法。

输入样例:
10
push 6
empty
query
pop
empty
push 3
push 4
pop
query
push 6

输出样例:
NO
6
YES
4

先上代码:

#include <bits/stdc++.h>
using namespace std;
int q[100010], tt = -1, hh = 0;
int main()
{ios::sync_with_stdio(false);int m, x;string s;cin >> m;while(m--){cin >> s;if(s == "push"){cin >> x;q[++tt] = x;}if(s == "pop"){hh++;}if(s == "query"){cout << q[hh] << endl;}if(s == "empty"){if(hh > tt)cout << "YES" << endl;elsecout << "NO" << endl;}}return 0;
}

注意的地方:

判断为空的条件是h>t,h==t时队列里是有一个结点的。

ACwing 829 模拟队列相关推荐

  1. ~~队列(数据结构)(附模板题 AcWing 829. 模拟队列)

    1. 普通队列: // hh 表示队头,tt表示队尾 int q[N], hh = 0, tt = -1;// 向队尾插入一个数 q[ ++ tt] = x;// 从队头弹出一个数 hh ++ ;// ...

  2. AcWing 829. 模拟队列

    题目连接 https://www.acwing.com/problem/content/831/ 思路 我们定义一个head和tail表示头尾指针,然后push的时候就把tail指针往后移动,pop的 ...

  3. Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP

    单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...

  4. 7-22 堆栈模拟队列 (25 分)

    设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判断堆栈S是否已满,返回1或0: in ...

  5. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  6. 033_使用ArrayDeque模拟队列结构

    import java.util.ArrayDeque; import java.util.Iterator;/*** 使用ArrayDeque模拟队列结构*/ public class QueueU ...

  7. uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列

    题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间. 这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数 ...

  8. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)

    Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1 ...

  9. (数据结构与算法)数组模拟队列和环形队列

    文章目录 数组模拟队列 思路 代码实现 问题分析并优化 数组模拟环形队列 思路 代码实现 数组模拟队列 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取 ...

  10. 【干货】容器适配器实现两个栈模拟队列

    用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...

最新文章

  1. oracle 查看并行数据库,Oracle数据库并行查询出错的解决方法
  2. 数据结构—— 基于二叉树的算术表达式求值
  3. 幅度和幅值有区别吗_你知道避雷器与浪涌保护器的区别吗?
  4. 如何避免delete和delete[]的尴尬?
  5. VS2015 scanf 函数报错 error C4996: 'scanf'
  6. python凯撒加密带大小写_python实现凯撒加密
  7. 非线性动力学_利用非线性动力学系统研究混沌现象
  8. 14.Nor-Flash操作实例
  9. 好看的colormap颜色
  10. 图解HTTP(笔记)
  11. Oldboy_day01 Python的历史,变量\常量\数据类型\用户交互\流程控制\循环while
  12. 2020年汽车驾驶员(高级)免费试题及汽车驾驶员(高级)实操考试视频
  13. 整数平方和立方对照表
  14. html中精灵图的使用方法,关于CSS Sprites、CSS精灵的详细解析
  15. ubuntu 16.04无法locate boot-repair的解决方法
  16. 特斯拉的市场策略在中国面临“失效”
  17. 解决VM 15.5.5ubuntu虚拟机键盘失灵、大小写失灵、caps lock失灵问题
  18. C++ API 设计 07 第二章
  19. delphi类没有注册
  20. 创建不可删除的IE快捷方式图标

热门文章

  1. ELK在广告系统监控中的应用 及 Elasticsearch简介
  2. 区块链软件公司:供应链高本钱的运用区块链技能是否值得?
  3. C#操作十六进制数据以及十进制与十六进制互相转换
  4. 架构之旅~一个操作的返回要有一个标准,看我的公用消息类
  5. c#中是否有javascript中的jQuery类库?
  6. java技术大牛之路
  7. java.sql.SQLException: Field 'id' doesn't have a default value解决方法
  8. Spanning Tree Protocol (STP) in NetScaler Appliance
  9. ERP软件的相关运营问题
  10. couldn't open file: data/coco.names