#12070. 双端队列操作
双端队列操作
📘 题目名称:双端队列操作
🧾 题目描述
你需要模拟一个简单的双端队列,支持如下三种操作:
PUSH_LEFT X
:将整数X
插入队列左端;PUSH_RIGHT X
:将整数X
插入队列右端;POP
:从队列左端弹出一个元素。
请按顺序执行这 M
条操作,并输出最终队列内容。
若某次操作非法(如试图在空队列执行 POP
,或命令拼写错误、缺少参数),请记录并输出该命令的编号和错误提示。
📥 输入格式
- 第一行一个整数
M
(1 ≤ M ≤ 10000),表示操作条数。 - 接下来的
M
行,每行一条命令,可能是:PUSH_LEFT X
PUSH_RIGHT X
POP
📤 输出格式
- 第一行输出队列中剩余的所有元素,从左到右,用空格隔开。如果队列为空,则输出空行。
- 之后每行输出一个错误信息,格式为:
X ERROR
,表示第X
条命令是非法的(编号从 1 开始)。
💡 样例输入
6
PUSH_LEFT 1
PUSH_RIGHT 2
PUSH_LEFT 3
POP
POP
POP
📌 样例输出
1
6 ERROR
🧠 提示
- 所有非法情况包括:
- 在空队列上执行
POP
- 命令拼写错误
- 缺少参数
- 在空队列上执行
- 建议使用
std::getline()
读取整行,再配合std::stringstream
分析命令与参数。