卡码网语言基础课|排队取奶茶

输入描述

第一行有一个整数 n,代表初始队列有 n 个人。 

第二行有 n 个字符串,代表当前奶茶队列中的人。 

第三行为一个整数 m,代表接下来将会有 m 次操作。 

接下来一共有 m 行,代表共有 m 次操作。 

如果是操作 1,那么该行只会有一个数字,代表有人取走了奶茶。
如果是操作 2,那么该行有一个数字和一个字符串,第一个数字 2 表示有人加入了奶茶队列,第二个字符串代表新加入的奶茶队列的人。

输出描述

输出只有一行,为下一个取奶茶的人。 如果已经没有去奶茶的人了,输出“There are no more people in the queue.”。

跟上题栈类似

// 引入queue头文件
#include <queue>
queue<string> q; // 创建一个字符串类型的队列

front() 访问队列的头部元素 但是不将其移除

#include <iostream>
#include <queue>
#include <string>
using namespace std;
int main() {
    int n, m, opt; // n代表队列长度,m代表操作次数,opt代表输入指令
    string name; //排队人的名字
    cin >> n;
    queue<string> q; // 新建一个队列
    while (n--) {
        cin >> name;
        q.push(name); // push操作入队
    }
    cin >> m;
    while (m--) {
        cin >> opt;
        // 注意这里如果队列已经为空就不能再弹出了,所以要判断是否为空
        if (opt == 1 && !q.empty()) q.pop(); // pop操作出队
        else {
            cin >> name;
            q.push(name);
        }
    }
  // empty操作判断队列是否为空
    if (q.empty()) cout << "There are no more people in the queue." << endl;
    else cout << q.front() << endl; // front操作取出队头元素
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值