队列--专题讲解
创始人
2024-05-19 13:57:03
0

文章目录

    • 模拟队列
    • queue
        • 头文件
        • 定义
        • 基本操作
    • 循环队列queue
    • 优先队列priority_queue
    • 银行大厅排队
    • 训练挑战

模拟队列

先进先出
队列大概模样
在这里插入图片描述
代码截屏:

#include
using namespace std;// 用数组模拟栈
const int N=100;
int que[N],k=0;  // que代表的是队列数组,k就是队尾指针
//入队:队尾指针先+1,然后入队
que[++k]=66;//出队:队顶指针先-1,然后出队
for(int i =0;ique[i]=que[i+1];
}
k--;// 判断队列是否为空
if(k==0) true
else false//队首
que[0];//队尾
que[k];

queue

头文件

#include 

定义

//队列 queue q;

基本操作

  //向队尾插入一个元素q.push();//返回队头元素q.front();//返回队尾元素q.back();//弹出对头元素q.pop();//元素个数q.size();//清空队列q = queue();

循环队列queue

	//push/pop//push入队尾,pop入队头 for(int i=0;i<10;i++) q.push(i);q.pop();//front/backint x=q.front();int y=q.back();cout<<"front= "<

优先队列priority_queue

用法详解点这里

  • top 访问队头元素
  • empty 队列是否为空
  • size 返回队列内元素个数
  • push 插入元素到队尾 (并排序)
  • emplace原地构造一个元素并插入队列
  • pop 弹出队头元素
  • swap 交换内容

定义

//升序序列priority_queue,greater > qg;//降序序列priority_queue,less > ql;

银行大厅排队

描述:

在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。

输入

第一行输入先输入n表示客户数量
第二行输入每个客户的类型,数据之间用用空格隔开
第三行输入每个客户的办理时间,数据之间用用空格隔开

/示例/
8
A B C B C A A A
10 20 30 40 50 60 70 80
1
2
3
4
输出:

第一行输出A类客户的平均办理时间 :
第二行输出B类客户的平均办理时间 :20+40=60/2=30
第三行输出C类客户的平均办理时间

/示例/
55
30
40
解题思路:

为了算出各类客户的平均办理时间,首先要知道的是各类客户花费的总时间。

3种窗口服务三种客户,也就是算出每个窗口的时间。通过将每个窗口抽象成一个队列,将时间作为内容填入队列,即可算出总时间。

除了每个窗口的队列以外,我们还需要将输入的顺序进行存储,因此总共需要4条队列。

#include
#include
using namespace std;int main() {int t;  //次数int m;  //待输入的时间char ch;  //待输入的客户类型queue myQe, myQa[3];  // Qe代表次序,Qa代表窗口cin >> t;// 输入部分while (t--) {cin >> ch;myQe.push(ch-65);  //注意此处push进去的是一个数字,为了查找方便,当ch=A时,把0给push进去,以此类推。A字符转化为数字为65}//输入部分while (!myQe.empty()) {cin >> m;int num = myQe.front();  //根据顺序获取窗口myQe.pop();myQa[num].push(m);}//输出部分for (int i = 0; i < 3; i++) {int n = myQa[i].size();  //计算平均数时需要的分母int sum = 0;while (!myQa[i].empty()) {sum += myQa[i].front();myQa[i].pop();}cout << sum / n << endl;}
}

训练挑战

#include
#include
using namespace std;int main() {int t;  //次数int m;  //待输入的时间char ch;  //待输入的客户类型queue myQe, myQa[3];  // Qe代表次序,Qa代表窗口cin >> t;// 输入部分while (t--) {cin >> ch;; //注意此处push进去的是一个数字,为了查找方便,当ch=A时,把0给push进去,以此类推。A字符转化为数字为65}//输入部分while (!myQe.empty()) {cin >> m;int num = myQe.front();  //根据顺序获取窗口;//myQe弹出;//myQa[num]入队列m}//输出部分for (int i = 0; i < 3; i++) {int n = myQa[i].size();  //计算平均数时需要的分母;//定义num,并初始化while () {//判断myQa[i]是否为空;//sum加上当前myQa[i]的值;//myQa[i]弹出};//输出 sum 除以 n 答案 }
}

相关内容

热门资讯

安卓子系统windows11,... 你知道吗?最近科技圈可是炸开了锅,因为安卓子系统在Windows 11上的兼容性成了大家热议的话题。...
电脑里怎么下载安卓系统,电脑端... 你有没有想过,你的电脑里也能装上安卓系统呢?没错,就是那个让你手机不离手的安卓!今天,就让我来带你一...
索尼相机魔改安卓系统,魔改系统... 你知道吗?最近在摄影圈里掀起了一股热潮,那就是索尼相机魔改安卓系统。这可不是一般的改装,而是让这些专...
安卓系统哪家的最流畅,安卓系统... 你有没有想过,为什么你的手机有时候像蜗牛一样慢吞吞的,而别人的手机却能像风一样快?这背后,其实就是安...
安卓最新系统4.42,深度解析... 你有没有发现,你的安卓手机最近是不是有点儿不一样了?没错,就是那个一直在默默更新的安卓最新系统4.4...
android和安卓什么系统最... 你有没有想过,你的安卓手机到底是用的是什么系统呢?是不是有时候觉得手机卡顿,运行缓慢,其实跟这个系统...
平板装安卓xp系统好,探索复古... 你有没有想过,把安卓系统装到平板上,再配上XP系统,这会是怎样一番景象呢?想象一边享受着安卓的便捷,...
投影仪装安卓系统,开启智能投影... 你有没有想过,家里的老式投影仪也能焕发第二春呢?没错,就是那个曾经陪你熬夜看电影的“老伙计”,现在它...
安卓系统无线车载carplay... 你有没有想过,开车的时候也能享受到苹果设备的便利呢?没错,就是那个让你在日常生活中离不开的iOS系统...
谷歌安卓8系统包,系统包解析与... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,最近谷歌又发布了安卓8系统包,听说这个新...
微软平板下软件安卓系统,开启全... 你有没有想过,在微软平板上也能畅享安卓系统的乐趣呢?没错,这就是今天我要跟你分享的神奇故事。想象你手...
coloros是基于安卓系统吗... 你有没有想过,手机里的那个色彩斑斓的界面,背后其实有着一个有趣的故事呢?没错,我要说的就是Color...
安卓神盾系统应用市场,一站式智... 你有没有发现,手机里的安卓神盾系统应用市场最近可是火得一塌糊涂啊!这不,我就来给你好好扒一扒,看看这...
黑莓平板安卓系统升级,解锁无限... 亲爱的读者们,你是否还记得那个曾经风靡一时的黑莓手机?那个标志性的全键盘,那个独特的黑莓体验,如今它...
安卓文件系统采用华为,探索高效... 你知道吗?最近安卓系统在文件管理上可是有了大动作呢!华为这个科技巨头,竟然悄悄地给安卓文件系统来了个...
深度系统能用安卓app,探索智... 你知道吗?现在科技的发展真是让人惊叹不已!今天,我要给你揭秘一个超级酷炫的话题——深度系统能用安卓a...
安卓系统的分区类型,深度解析存... 你有没有发现,你的安卓手机里藏着不少秘密?没错,就是那些神秘的分区类型。今天,就让我带你一探究竟,揭...
安卓系统铠无法兑换,揭秘无法兑... 最近是不是有很多小伙伴在玩安卓系统的游戏,突然发现了一个让人头疼的问题——铠无法兑换!别急,今天就来...
汽车安卓系统崩溃怎么刷,一键刷... 亲爱的车主朋友们,你是否曾遇到过汽车安卓系统崩溃的尴尬时刻?手机系统崩溃还能重启,但汽车系统崩溃了,...
miui系统可以刷安卓p系统吗... 亲爱的手机控们,你是否对MIUI系统情有独钟,同时又对安卓P系统的新鲜功能垂涎欲滴?今天,就让我带你...