首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >银行业务队列简单模拟 STL队列 题解

银行业务队列简单模拟 STL队列 题解

作者头像
十四君
发布2019-11-29 14:48:06
8230
发布2019-11-29 14:48:06
举报
文章被收录于专栏:UrlteamUrlteamUrlteam

题目链接:https://pta.patest.cn/pta/test/15/exam/4/question/825队列比较简单,就附上队列的基本信息加源代码.

STL__sqeue 队列

一、原理queue 队列也是一个线性存储表,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出FIFO(First In First Out)表。插入一端称为队尾,删除一端称为队首。

默认使用双端队列deque来实现,queue也可看成一个容器适配器,将 deque 容器转换为 queue 容器。当然,也可以利用其他合适的序列容器作

为底层实现queue容器。

C++ STL对queue队列的泛化,是通过模板类型,将默认的deque双端队列类型导入,在内部创建一个序列容器对象,来处理 queue队列的数据存储和操作,包括queue队列是否为空、取队首元素、取队尾元素、元素入队和元素出队等。由于仅需要取队首和队尾元素的操作,因此queue队列容器并不提供任何类型的迭代器。

二、应用

1、创建

(1)queue() 默认的构造函数,创建一个空的 queue 对象。

queue<int> q;//使用默认的双端队列为底层容器创建了一个空的queue队列对象q,数据元素为int类型

(2)queue(const queue&) 复制构造函数,用一个queue对象创建新的queue对象。

//queue<int, list<int> > q1;

queue<int, list<int> > q2(q1);//以双向链表为底层容器的queue对象

2、入队和出队

void push(const value_type& x) //插入队列

void pop()//出队,从队列中删除

3、取队首尾元素

queue队列容器的front函数和back函数,可分别读取队首和队尾元素。

(1)value_type& front() 读取队列的队首元素。

(2)value_type& back() 读取队列的队尾元素。

4、其它

(1)bool empty() //判断空

(2)size_type size() //队列大小

5-18 银行业务队列简单模拟   (25分)

设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。

输入格式:

输入为一行正整数,其中第1个数字N(\le≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。

输出格式:

按业务处理完成的顺序输出顾客的编号。数字间以空格分隔,但最后一个编号后不能有多余的空格。

输入样例:

8 2 1 3 9 4 11 13 15
 

输出样例:

1 3 2 9 11 4 13 15

代码如下:

#include "stdio.h"
#include "queue"
#include "iostream"
using namespace std;
int main(int argc, char const *argv[]) {
    int num,i;
    scanf("%d", &num);
    queue<int> A,B;
    for (int i = 0; i < num; i++) {
        int temp;
        scanf("%d", &temp);
        if(temp % 2){ //奇数
            A.push(temp);
        }
        else{
            B.push(temp);
            //printf("%d\n", B.front());
        }
    }
    int flag = 0;
    if(!A.empty()){//为了空格问题
        printf("%d", A.front());
        A.pop();
        i = 1;
    }
    else{
        printf("%d", B.front());
        B.pop();
    }
    while (!B.empty() || !A.empty()) {//至少一个非空
        i ++;
        if(i % 2){
            if(!A.empty()){
                printf(" %d", A.front());
                A.pop();
            }
        }
        else{
            if(!A.empty()){
                printf(" %d", A.front());
                A.pop();
            }
            if(!B.empty()){
                printf(" %d", B.front());
                B.pop();
            }
        }
    }
    printf("\n");
    return 0;
}

原创文章,转载请注明: 转载自URl-team

本文链接地址: 银行业务队列简单模拟 STL队列 题解

No related posts.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-172,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • STL__sqeue 队列
  • 5-18 银行业务队列简单模拟   (25分)
    • 输入格式:
      • 输出格式:
        • 输入样例:
          • 输出样例:
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档