队列的概念

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

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

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

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

    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 }

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

最新文章

  1. OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差
  2. Sublime Text 3专题
  3. Silverlight中将WriteableBitmap互转byte数组
  4. matlab eps
  5. c随机数&amp;运行时间
  6. 【python】An Introduction to Interactive Programming in Python(week two)
  7. 用Dictionary代替if
  8. esriSRProjCS3Type Constants
  9. Chapter6:函数
  10. v4l2简介
  11. 回调函数的意义以及python实现
  12. 转:使用linq to sql 随机取一行数据的方法
  13. 第39届ACM亚洲区域赛牡丹江赛区赛后总结
  14. 【转】 C/C++程序员必须熟练应用的开源项目
  15. SDP(10):文本式大数据运算环境-MongoDB-Engine功能设计
  16. Urban Elevations UVA - 221
  17. Zabbix3.0基础教程之二:item、trigger、action、graph配置
  18. 关于datetimepicker只显示年、月、日的设置
  19. test20181005 序列
  20. MAVEN 引入外部JAR 包

热门文章

  1. linux系统移植
  2. day16 正则表达式 &amp; 反射 &amp; Java内存模型(JMM)
  3. TypeScript 之 Type
  4. 复杂mysql/多表查询
  5. 最大值减去最小值小于或等于 num 的子数组数量问题
  6. 跟我学Python图像处理丨带你入门OpenGL
  7. 彻底理解Python中的闭包和装饰器(下)
  8. 在Maven中出现javax.mail中文乱码问题解决记录
  9. python之yaml文件读取封装
  10. FPGA:乒乓球比赛模拟机的设计