【C++】队列-基本掌握

默认分类 | 2020-02-07 13:08:28 | 阅读 351 次 | 评论(0)

队列-简介:

队列类型,同栈类型相比,队列不像栈,队列只能取队首的值:如下图:

queue.png (上传于2020-02-07 13:08:28)
queue.png

点击查看——栈:http://blog.bccn.net/return_0/66944

队列-声明:

同栈一样,不过关键词换了一下:

queue</*数据结构*/>/*栈名*/;

可见栈的关键词(也不是关键词)就是‘queue’不过,在声明栈类之前,必须包含头文件:#include<queue>才能保证不出错。

队列-使用:

相比起声明,大家更关心的肯定是——怎么用呢?只需掌握以下几个成员函数即可:


1.push()/*压入值*/

格式:/*队列名*/.push(/*要压入的元素*/);

例:a.push(6);

2.pop()/*弹出值,记住,一弹就回不来了!*/

格式:/*队列名*/.pop();

例:a.pop();

3.front()/*获取队前的值*/


格式:/*队列名*/.front();

例:int f=a.front();

4.back()/*获取队尾的值*/

格式:/*队列名*/.back();

例:int b=a.back();

5.size()/*测量队列的长度*/

格式:/*队名*/.size();

例:int lent=a.size();

6.empty()/*判定队列是否空,若为空,返回true,若为非空,返回false*/

格式:/*队名*/.empty();

例:bool flag=a.empty();

队列-实战:

https://noi.top/questions/2653队列消消乐

题目描述:

Karl 最近发明了一个游戏,叫做队列消消乐,玩法如下:
1.现在有一个队列,Karl 每次可以选择一个数字入队。
2.如果入队后数字与队首数字(不包括自身)差 10 以内(不包括 10 )的话,把这两个数字消去,然后得到它们差值的分数。

现在按顺序告诉你 Karl 放入数字的情况,请你帮他算出总得分。

输入格式

第一行一个数字 n
然后第二行 n 个数字,表示 Karl 放入数字的情况,按顺序给出。

输出格式

一个整数,表示 Karl 的总得分。

数据范围

1 \leq n \leq 10000

实战样例

sample input

8
2 12 4 0 6 4 8 24
sample outputs

12

实战题解

#include<bits/stdc++.h>
using namespace std;
queue <int> a;
int main(){
int n,t,sc=0;
cin>>n;
cin>>t;
a.push(t);
for(int i=1;i<n;i++){
cin>>t;
if(!a.empty()&&abs(t-a.front())<10){
sc+=abs(t-a.front());
a.pop();
}
else{
a.push(t);
}
}
cout<<sc;
return 0;
}

文章评论,共0条
游客请输入验证码
浏览1653次
文章分类
文章归档
最新评论