使用mod操作排队

Edi*_*die 3 c++ queue

我正在研究数据结构(Queue)的基础知识,到目前为止,我了解Queue的流程,但我不了解何时使用Mod运算符应用队列。有几个问题使我的大脑困惑。如何回答这个问题(参考图片)?

这里有问题的例子。

Tho*_*ews 5

处理循环队列的最佳方法是将其绘制出来。由于圆圈在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)