处理循环队列的最佳方法是将其绘制出来。由于圆圈在ASCII艺术方面的发布效果不是很好,因此我将使用线性数组。
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4
^
Rear
Run Code Online (Sandbox Code Playgroud)
REAR位于索引4。
让我们逐步执行操作。
首先:将1加到REAR。这使REAR点超出了数组:
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4 5
^
Rear
Run Code Online (Sandbox Code Playgroud)
应用模运算%,这将使我们的余数5 / 5
为零:
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4
^
Rear
Run Code Online (Sandbox Code Playgroud)
因此,取模操作像圆形一样环绕数组。
下一个问题需要您解决。记住绘制数组或队列。您可以使用圆圈(例如切成薄片的馅饼或切成薄片的比萨饼)。
编辑1:取模的详细信息
当N是除数时,取模运算将得到一个范围为0..N的值。
给定N == 4,这是模的一些结果:
Index result
0 0
1 1
2 2
3 3
4 0 --> The remainder of 4 / 4 == 0.
5 1
6 2
7 3
8 0 --> The remainder of 8 / 4 == 0.
Run Code Online (Sandbox Code Playgroud)