写一个会回绕的下一格

补全 nxt:给出当前下标和容量,返回下一格的下标(到末尾要绕回 0)。 补全后输出容量 4 时下标 3 的下一格。

开始练习 →

循环入队:绕回去用前面的空格

补全 enqueue:新元素写在 (head + count) % 容量 那一格。 容量 4,先排 4 个人,叫走 1 个,再排进「北辰」。输出北辰被写在了哪一格。

开始练习 →

循环出队:队头也要会绕

补全 dequeue:取走 head 那一格,然后让 head 往前挪一格(要会绕回 0)。 容量 4:排满 4 个 → 全叫走(head 正好绕完一圈)→ 再排 3 个 → 又叫走 2 个。 输出最后 head 停在哪一格。

开始练习 →

只看 head 和 tail 为什么分不清

循环队列里只比较 head 和 tail,分不清满和空,因为【0】。

开始练习 →

通常怎么解决这个歧义

解决满/空分不清,常见做法是【0】。

开始练习 →

用计数法判满,条件写成什么

用「另存一个计数」的做法,满的条件是【0】。

开始练习 →

满了没有

运行下面这段程序: class CQueue: def __init__(self, cap=4): self.data = [None] * cap self.head = 0 se

开始练习 →

空了没有

运行下面这段程序: class CQueue: def __init__(self, cap=4): self.data = [None] * cap self.head = 0 se

开始练习 →

写出判空和判满

补全 is_empty 和 is_full。 容量 4,排进 4 个人之后,输出它满了没有。

开始练习 →

满了还往里排,得挡住

补全 enqueue:满了就不写入、返回 队列已满,没满才正常排进去并返回 已排上。 容量 4,排进 4 个人之后再排「北辰」,输出这次的结果。

开始练习 →