队列--专题讲解
创始人
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 答案 }
}

相关内容

热门资讯

安卓系统苹果手机识别,跨界融合... 你知道吗?在科技飞速发展的今天,手机已经成为了我们生活中不可或缺的一部分。而说到手机,安卓系统和苹果...
harmonyos系统是不是安... 亲爱的读者,你是否曾好奇过HarmonyOS系统与安卓系统之间的关系?是不是安卓的“亲戚”?今天,就...
手机怎么装系统安卓,安卓系统安... 手机卡顿了?想给安卓系统来个大变身?别急,跟着我一步步来,保证让你的手机焕然一新!一、准备工作在开始...
安卓Linux系统内网穿透,A... 你有没有想过,你的安卓手机里那些看似普通的APP,其实可能正在悄悄地帮你打通网络世界的任督二脉呢?没...
win怎么安装安卓系统,Win... 亲爱的读者,你是不是对Win系统上的安卓应用垂涎已久,但又苦于不知道如何安装安卓系统呢?别急,今天我...
升级小米平板安卓系统,畅享全新... 你有没有发现,你的小米平板用久了,是不是感觉有点卡呢?别急,今天就来教你怎么给它来个系统升级,让它焕...
捷豹安卓系统车载,捷豹安卓系统... 哇,你有没有想过,当你的手机和汽车融为一体,会是怎样的体验呢?想象你正驾驶着你的捷豹,车窗外的风景如...
安卓1到10系统,安卓1.0至... 你有没有想过,手机里的安卓系统就像是我们生活中的好朋友,从青涩的少年成长为稳重的青年呢?从安卓1.0...
安卓8.0停用系统应用,提升使... 你知道吗?最近安卓系统又来了一次大动作,那就是安卓8.0系统开始停用一些系统应用了。这可真是让人有点...
安卓系统修改mtu值,轻松提升... 你有没有想过,你的安卓手机其实是个小小的电脑呢?它里面藏着许多可以自定义的秘密功能,就像修改MTU值...
安卓平板改window系统,探... 你有没有想过,你的安卓平板其实可以摇身一变,变成一个Windows系统的电脑呢?没错,就是那种可以运...
时空猎人安卓苹果系统,探索无尽... 你知道吗?最近在手机游戏圈里,有一款叫做《时空猎人》的游戏可是火得一塌糊涂呢!不管是安卓用户还是苹果...
安卓9.0系统的电视,新一代电... 亲爱的读者们,你是否也像我一样,对科技新玩意儿充满好奇?今天,我要和你聊聊一个让人眼前一亮的话题——...
小pc安装安卓系统,轻松安装安... 你有没有想过,你的小PC也能变身成为安卓系统的超级玩家呢?没错,就是那个平时默默无闻的小家伙,现在也...
高通备份安卓系统,全方位数据安... 你知道吗?在这个科技飞速发展的时代,手机备份可是个不得不提的话题。尤其是对于安卓用户来说,选择一个靠...
谷歌安卓系统有多少,从诞生到全... 你有没有想过,那个无处不在的谷歌安卓系统,究竟在全球有多少用户呢?它就像一个神秘的数字,每天都在悄悄...
fc黄金传说安卓系统,畅享复古... 你有没有听说最近安卓系统上的一款超酷的游戏——《FC黄金传说》?这款游戏可是让不少玩家都沉迷其中,今...
变小的我安卓系统,安卓系统演变... 你有没有发现,最近你的手机好像变轻了?没错,说的就是你,那个陪伴你多年的安卓系统。它悄无声息地进行了...
vivo安卓系统小彩蛋,体验科... 你知道吗?在vivo的安卓系统中,竟然隐藏着一些超有趣的小彩蛋!这些小彩蛋就像是在手机里埋下的宝藏,...
安卓系统如何强制重启,安卓系统... 手机突然卡壳了,是不是又该给它来个“大保健”了?没错,今天就来聊聊安卓系统如何强制重启。别小看这个看...