时间限制:1.000S 空间限制:128MB
题目描述
假设有一家奶茶店,现在有一些人在排队等待取奶茶,同时也有人在取奶茶。 请你设计一个程序模拟这种情况下的奶茶队列管理。
假设每个人取奶茶的时间非常短,可以忽略不计,只需要考虑队列中的操作。
队列操作说明:
1. 当操作为 1 时,表示有人已经取走奶茶,从队列中删除该人的信息。
2. 当操作为 2 时,表示有新人加入排队,将该人的信息加入队列。
在一系列操作之后,你需要回答:下一个取奶茶的人是谁?
输入描述
第一行有一个整数 n,代表初始队列有 n 个人。
第二行有 n 个字符串,代表当前奶茶队列中的人。
第三行为一个整数 m,代表接下来将会有 m 次操作。
接下来一共有 m 行,代表共有 m 次操作。
如果是操作 1,那么该行只会有一个数字,代表有人取走了奶茶。
如果是操作 2,那么该行有一个数字和一个字符串,第一个数字 2 表示有人加入了奶茶队列,第二个字符串代表新加入的奶茶队列的人。
输出描述
输出只有一行,为下一个取奶茶的人。 如果已经没有去奶茶的人了,输出“There are no more people in the queue.”。
输入示例
5
Giselle Winter Aubree Wrenley Royalty
3
1
1
2 Andrew
输出示例
Aubree
代码示例
#include <iostream>
#include <queue>
#include <string>
using namespace std;
int main()
{
int n,m,opt;//表示有n个人
cin >> n;
string name;//排队队列中人的姓名
queue<string> q;//创建一个队列,用于存储输入的字符串名称
while(n--)
{
cin >> name;
q.push(name);//使用push操作将名字推送到队列中
}
cin >> m;//输入m表示有m次操作
while(m--)
{
cin >> opt;
if(opt == 1 && !q.empty() )
{
q.pop();//出队
}
else{
cin >> name;
q.push(name);//入队
}
}
if(q.empty())
{
cout << "There are no more people in the queue." << endl;
}
else{
cout << q.front() << endl;
}
return 0;
}