ACwing 829 模拟队列
题目描述
实现一个队列,队列初始为空,支持四种操作:
(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 模拟队列相关推荐
- ~~队列(数据结构)(附模板题 AcWing 829. 模拟队列)
1. 普通队列: // hh 表示队头,tt表示队尾 int q[N], hh = 0, tt = -1;// 向队尾插入一个数 q[ ++ tt] = x;// 从队头弹出一个数 hh ++ ;// ...
- AcWing 829. 模拟队列
题目连接 https://www.acwing.com/problem/content/831/ 思路 我们定义一个head和tail表示头尾指针,然后push的时候就把tail指针往后移动,pop的 ...
- Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP
单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...
- 7-22 堆栈模拟队列 (25 分)
设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判断堆栈S是否已满,返回1或0: in ...
- 数据结构——栈与队列操作(用栈模拟队列)
[栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...
- 033_使用ArrayDeque模拟队列结构
import java.util.ArrayDeque; import java.util.Iterator;/*** 使用ArrayDeque模拟队列结构*/ public class QueueU ...
- uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列
题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间. 这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数 ...
- 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1 ...
- (数据结构与算法)数组模拟队列和环形队列
文章目录 数组模拟队列 思路 代码实现 问题分析并优化 数组模拟环形队列 思路 代码实现 数组模拟队列 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取 ...
- 【干货】容器适配器实现两个栈模拟队列
用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...
最新文章
- oracle 查看并行数据库,Oracle数据库并行查询出错的解决方法
- 数据结构—— 基于二叉树的算术表达式求值
- 幅度和幅值有区别吗_你知道避雷器与浪涌保护器的区别吗?
- 如何避免delete和delete[]的尴尬?
- VS2015 scanf 函数报错 error C4996: 'scanf'
- python凯撒加密带大小写_python实现凯撒加密
- 非线性动力学_利用非线性动力学系统研究混沌现象
- 14.Nor-Flash操作实例
- 好看的colormap颜色
- 图解HTTP(笔记)
- Oldboy_day01 Python的历史,变量\常量\数据类型\用户交互\流程控制\循环while
- 2020年汽车驾驶员(高级)免费试题及汽车驾驶员(高级)实操考试视频
- 整数平方和立方对照表
- html中精灵图的使用方法,关于CSS Sprites、CSS精灵的详细解析
- ubuntu 16.04无法locate boot-repair的解决方法
- 特斯拉的市场策略在中国面临“失效”
- 解决VM 15.5.5ubuntu虚拟机键盘失灵、大小写失灵、caps lock失灵问题
- C++ API 设计 07 第二章
- delphi类没有注册
- 创建不可删除的IE快捷方式图标
热门文章
- ELK在广告系统监控中的应用 及 Elasticsearch简介
- 区块链软件公司:供应链高本钱的运用区块链技能是否值得?
- C#操作十六进制数据以及十进制与十六进制互相转换
- 架构之旅~一个操作的返回要有一个标准,看我的公用消息类
- c#中是否有javascript中的jQuery类库?
- java技术大牛之路
- java.sql.SQLException: Field 'id' doesn't have a default value解决方法
- Spanning Tree Protocol (STP) in NetScaler Appliance
- ERP软件的相关运营问题
- couldn't open file: data/coco.names