#QUEUE001. 排队叫号
排队叫号
排队叫号
题目背景
队列是一种遵循“先进先出”(FIFO)原则的数据结构。新元素从队尾进入,旧元素从队头离开。
本题用于练习 C++ STL 中 queue 的常用操作:
push(x):在队尾加入元素;pop():删除队头元素;front():读取队头元素;back():读取队尾元素;empty():判断队列是否为空;size():返回队列中的元素个数。
题目描述
某服务窗口使用队列管理排队人员,每个人都有一个正整数编号。
现在共有 次操作,请按照操作要求维护队列,并输出对应结果。
操作分为以下五种:
1 x:编号为 的人到达,加入队尾;2:叫到队头的人并让其离开,输出该人的编号;如果队列为空,输出-1;3:查询队头人员的编号,但不让其离开;如果队列为空,输出-1;4:查询队尾人员的编号;如果队列为空,输出-1;5:查询当前队列中的人数。
输入格式
第一行输入一个整数 ,表示操作次数。
接下来 行,每行输入一次操作。
输出格式
对于操作 2、3、4 和 5,每次输出一行对应的结果。
输入输出样例
样例 1
12
1 1001
1 1002
3
4
5
2
3
1 1003
2
2
2
5
1001
1002
2
1001
1002
1002
1003
-1
0
样例 2
7
2
3
4
5
1 8
2
5
-1
-1
-1
0
8
0
数据范围
对于全部测试数据:
- ;
- 。
提示
处理删除操作时,要先判断队列是否为空。
pop() 只负责删除队头元素,不会返回被删除的值。
错误写法:
int x = q.pop();
正确写法:
int x = q.front();
q.pop();
来源
数据结构课堂练习——队列的基本操作
粤公网安备44195502000195号