队列的概念

  在说队列之前,先回忆一下栈是什么,我们一般说栈是一个先进后出的数据结构,而队列就是先进先出的数据结构。

  队列是定在表的一端进行插入,表的另一端进行删除。

  通常,我们称进数据的一端为队尾,出数据的一端为队首(这边需要注意,经常会记反起码我是这样的),数据元素进队列的过程称为入队,出队列的过程称为出队。

  队列存储的方式主要分为两种:

    1.顺序队列(集中存储)      2.链队列(分散存储)

  两者的区别主要就是顺序表和链表的区别。

队列的用法

  和栈一样,队列同样可以使用STL来操作。

  队列的头文件是:

1 #include<queue> //当然万能头中也包括此头文件

  有以下几种操作方式:

1 queue<int> q; //建立一个队列q
2 q.push(a); //将元素a插入到队列q的末尾
3 q.pop(); //删除q的队首元素
4 q.front(); //查询q的队首元素(这里要注意它和栈略有不同,栈中用的是top函数)
5 q.back(); //查询q的队尾元素
6 q.size(); //查询q的元素个数
7 q.empty(); //查询q是否为空

  一定要注意在队列中查询队首元素是front不是top,不然就会被无情报错 本蒟蒻第一次打队列时记错了,结果……

队列的模板

  题目

      题目描述

      请你实现一个队列(queue),支持如下操作:
      push(x):向队列中加入一个数 x。
      pop():将队首弹出。如果此时队列为空,则不进行弹出操作,并输出 “ERR_CANNOT_POP”。
      query():输出队首元素。如果此时队首为空,则输出“ERR_CANNOT_QUERY”。
      size():输出此时队列内元素个数。

      输入格式

      第一行,一个整数n,表示操作的次数。

      接下来n行,每行表示一个操作。格式如下:

      “1 x”,表示将元素 `x` 加入队列。
      “2”,表示将队首弹出队列。
      ”3”,表示查询队首。
      “4”,表示查询队列内元素个数。

      输出格式

      输出若干行,对于每个操作,按「题目描述」输出结果。

      每条输出之间应当用空行隔开。

      输入样例                                               输出样例

      13                                 2
      1 2 1
      3 2
      4 233
      1 233 0
      3 ERR_CANNOT_POP
      2 ERR_CANNOT_QUERY
      3 144
      2
      4
      3
      2
      1 144
      3
 1 #include<bits/stdc++.h> //万能头文件,包含了<queue>
2 #define MAXN 100010
3 #define ll long long
4 using namespace std;
5 int n;
6 queue<unsigned long long> s;
7 int main()
8 {
9 cin>>n;
10 for(int i=1;i<=n;i++)
11 {
12 int a;
13 cin>>a;
14 if(a==1)
15 {
16 int x;
17 cin>>x;
18 s.push(x);
19 }
20 if(a==2)
21 {
22 if(s.empty())
23 cout<<"ERR_CANNOT_POP"<<endl;
24 else
25 s.pop();
26 }
27 if(a==3)
28 {
29 if(s.empty())
30 cout<<"ERR_CANNOT_QUERY"<<endl;
31 else
32 cout<<s.front()<<endl;
33 }
34 if(a==4)
35 cout<<s.size()<<endl;
36 }
37 return 0;
38 }

                                                                        码字不易,点个赞呗§(* ̄▽ ̄*)§

队列——queue的用法(及洛谷B3616)的更多相关文章

  1. STL中队列queue的用法

    头文件:#include <queue> 建立一个队列queue < 类型 > q 加入一个新的元素q.push(a) 询问队首元素q.front() 弹出队首元素q.pop( ...

  2. 洛谷3258:[USACO2012 MAR]Flowerpot 花盆——题解

    https://www.luogu.org/problemnew/show/P2698#sub 老板需要你帮忙浇花.给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位 ...

  3. 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】

    (是时候为五一培训准备真正的技术了qwq) part1  队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...

  4. 【BZOJ】4721: [Noip2016]蚯蚓 / 【洛谷】P2827 蚯蚓(单调队列)

    Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮 ...

  5. 洛谷P2216: [HAOI2007]理想的正方形 单调队列优化DP

    洛谷P2216 )逼着自己写DP 题意: 给定一个带有数字的矩阵,找出一个大小为n*n的矩阵,这个矩阵中最大值减最小值最小. 思路: 先处理出每一行每个格子到前面n个格子中的最大值和最小值.然后对每一 ...

  6. 洛谷P3222 [HNOI2012]射箭(计算几何,半平面交,双端队列)

    洛谷题目传送门 设抛物线方程为\(y=ax^2+bx(a<0,b>0)\),我们想要求出一组\(a,b\)使得它尽可能满足更多的要求.这个显然可以二分答案. 如何check当前的\(mid ...

  7. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)

    洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...

  8. 洛谷P3628 [APIO2010]特别行动队(动态规划,斜率优化,单调队列)

    洛谷题目传送门 安利蒟蒻斜率优化总结 由于人是每次都是连续一段一段地选,所以考虑直接对\(x\)记前缀和,设现在的\(x_i=\)原来的\(\sum\limits_{j=1}^ix_i\). 设\(f ...

  9. 洛谷P2900 [USACO08MAR]土地征用Land Acquisition(动态规划,斜率优化,决策单调性,线性规划,单调队列)

    洛谷题目传送门 用两种不一样的思路立体地理解斜率优化,你值得拥有. 题意分析 既然所有的土地都要买,那么我们可以考虑到,如果一块土地的宽和高(其实是蒟蒻把长方形立在了平面上)都比另一块要小,那么肯定是 ...

  10. 洛谷P3515 [POI2011]Lightning Conductor(动态规划,决策单调性,单调队列)

    洛谷题目传送门 疯狂%%%几个月前就秒了此题的Tyher巨佬 借着这题总结一下决策单调性优化DP吧.蒟蒻觉得用数形结合的思想能够轻松地理解它. 首先,题目要我们求所有的\(p_i\),那么把式子变一下 ...

随机推荐

  1. 快速构建一个简单的Springboot-web项目

    web项目基本的核心成分 数据落地 MYSQL数据库 登录标识 JWT :{Java web token } 记录有效登录状态 以及缓存常用数据: Redis 数据库与JAVA实体的快速自动映射ORM ...

  2. 【kafka】connect的timestamp模式无法同一秒插入多条记录问题解决

    一.现在问题 同时插入多条时间戳相同的记录 INSERT INTO "ABANK" VALUES ('1', 'CH', '00211', 'UBS Switzerland AG' ...

  3. 【每日一题】【排序sort重载】【工具类】2021年12月23日-31. 下一个排列

    实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数). 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须 ...

  4. .NET 6 实现滑动验证码(四)、扩展类

    为了能够通过配置文件(appsettings.json)或通过代码进行背景图片与模板进行配置.可自定义资源类型.自定义验证规则,本节创建一些扩展类,用来实现这些功能. 上一节内容:NET 6 实现滑动 ...

  5. RequestMappingHandlerMapping请求地址映射流程!

    上篇文章里,我们讲解了RequestMappingHandlerMapping请求地址映射的初始化流程,理解了@Controller和@RequestMapping是如何被加载到缓存中的. 今天我们来 ...

  6. UVA439 Knight Moves

    原题Vjudge 题目大意 有一个骑士,他可以骑马日字型跳跃,问他从A点到B点最少要几步 解题思路 这题就是一个特别裸的广搜板子 它的主要问题在于输入输出 输入的数据我们可以用\(pair\)读入,第 ...

  7. WCF 服务容器化的一些问题

    背景 目前项目当中存有 .NET Framework 和 .NET Core 两种类型的项目,但是都需要进行容器化将其分别部署在 Windows 集群和 Linux 集群当中.在 WCF 进行容器化的 ...

  8. 用Java写一个PDF,Word文件转换工具

    前言 前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具 源码weloe/FileConversion (github.co ...

  9. [Unity]Update()与FixedUpdate()

    Update()介绍 首先我们从官方文档的介绍了解: MonoBehaviour.Update() Description Update is called every frame, if the M ...

  10. Java学习笔记:2021年12月31日下午-2022年1月1日上午

    Java学习笔记:2021年12月31日下午-2022年1月1日上午 摘要:主要记录了计算机的电气构成,学习Linux系统的原因以及关于Linux以及相关操作的基础知识. 目录 Java学习笔记:20 ...