最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

当前视讯!队列——queue的用法(及洛谷B3616)

来源:博客园

队列的概念


(相关资料图)

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

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

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

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

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

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

队列的用法

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

队列的头文件是:

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

有以下几种操作方式:

1 queue q; //建立一个队列q2 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 //万能头文件,包含了 2 #define MAXN 100010 3 #define ll long long 4 using namespace std; 5 int n;  6 queue 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"<

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

关键词: 元素个数 数据结构