# 题解:限长传送带 出题人解法:预留一格的循环队列。Codex(GPT-6)整理实现,补齐零容量、零元素及有符号边界的说明,使用可移植的缓冲读取。 ## 循环队列与不变量 申请 $n+1$ 个整数位置,用 $Head,Tail$ 表示队首和下一个待写位置。下标到达 $n+1$ 时绕回零。队列中的有效元素按循环顺序组成半开区间 $[Head,Tail)$ ,最多使用 $n$ 格,留一格区分空与满。 - $Head=Tail$ 表示空。 - $Next(Tail)=Head$ 表示满。 - 插入成功时写入 $Tail$ ,再前移 $Tail$ . - 删除成功时输出 $Head$ 处的值,再前移 $Head$ . 初始两下标都为零,不变量成立。插入在有效区间末尾增加一项,删除只移除首项;判满和判空阻止越过容量边界,故始终正确模拟先进先出队列。忽略操作不会改变状态。 当 $n=0$ 时,数组长度为一,空与满同时成立,两种操作均被忽略。不能用元素值零判断空位,因为零是合法数据。 ## 实现与复杂度 每次操作耗时 $O(1)$ ,总时间 $O(m)$ ,空间 $O(n)$ .输入使用小型缓冲区,不存储全部操作。先在 64 位整数中读取绝对值和处理符号,再转换为 32 位整数,因此最小值 $-2^{31}$ 不会在取负时溢出。 [标准程序](std.cpp)把队列封装为结构体。用计数器区分满与空也成立,但与循环队列属于同一实现思路;链式节点会增加存储开销,无需作为独立解法。 数据和运行方式见[测试说明](tests/README.md),实测见[性能记录](../../../docs/benchmark-R36.json)。