Day9 排队取奶茶 -卡码网C++基础课

题目链接:排队取奶茶

题目描述

假设有一家奶茶店,现在有一些人在排队等待取奶茶,同时也有人在取奶茶。 请你设计一个程序模拟这种情况下的奶茶队列管理。
假设每个人取奶茶的时间非常短,可以忽略不计,只需要考虑队列中的操作。

队列操作说明:

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,x;
  string s;
  cin >> n;
  queue<string> q;
  while(n--){
      cin >> s;
      q.push(s);
  }
  cin >> m;
  while(m--){
      cin >> x;
      if(x == 1 && !q.empty()) q.pop();
      if(x == 2){
          cin >> s;
          q.push(s);
      }
  }
  if(q.empty()) cout << "There are no more people in the queue." << endl;
  else cout << q.front() << endl;
  return 0;
}
小结

题目思想

用队列存储名字
再根据输入判断出入队
最后根据是否队空,决定输出

知识点

队 (queue)

  头文件
  #include<queue>

  声明
  queue<string> q;

  常用方法
  empty(): 判断队列是否为空,如果队列为空返回true, 否则返回false
  push(): 入队操作,将新的元素添加到队列的尾部。
  pop(): 出队操作,移除队列的头部元素。
  front(): 访问队列的头部元素,但不会将其移除。
  size(): 获取队列的长度,即队列中元素的数量。
posted @ 2025-12-23 19:21  afterday  阅读(2)  评论(0)    收藏  举报