输入描述
第一行有一个整数 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操作取出队头元素
}