题目
实现一个先进先出(FIFO)队列结构,响应多行指令执行入队与出队操作。
输入格式:多行输入,指令以空格分隔:1 x 表示将 x 入队;0 表示出队并输出;-1 表示指令序列结束。
输出格式:对每次出队操作,分行输出出队元素的值;若队空则输出 empty。
数据范围与约定:操作总数不超过 1000。
思路与算法
1. 队列特性 FIFO
先进先出,队尾入队、队头出队。
2. collections.deque
使用 collections.deque 能够以 O(1) 复杂度实现高效的 append 与 popleft。
完整程序
from collections import deque
import sys
# 双端队列高效实现先进先出队列
q = deque()
lines = sys.stdin.read().split()
if not lines:
exit(0)
idx = 0
while idx < len(lines):
op = int(lines[idx])
idx += 1
if op == -1:
break
if op == 1:
# 入队操作
val = int(lines[idx])
idx += 1
q.append(val)
elif op == 0:
# 出队操作
if q:
print(q.popleft())
else:
print('empty')运行示例
输入:
1 10
1 20
0
0
-1输出:
10
20