我正在研究如何编写循环数组队列,入队方法的一部分让我感到困惑,特别是 back
变量变为 (back+1) 的部分%大小
void enqueue(char x) {
Q[back] = x
back = (back+1) % SIZE;
}
得到余数有什么意义呢?我不明白。
(该数组名为 Q
、int front = -1
、int back = 0
和 int size = 0
>)
最佳答案
由于这是一个循环队列,一旦队列末尾到达数组末尾,如果添加另一个元素,它应该添加到数组开头。
数组的有效索引为 0
到 SIZE - 1
(假设 SIZE == Q.length
)。
因此,在 Q[back == SIZE-1]
添加元素后,队列的末尾应变为 (back+1) % SIZE == (SIZE- 1+1)%大小==0
。
附注我不确定您是否包含 enqueue
方法的完整代码。在添加新元素之前,您似乎没有检查队列是否已满。
关于java - 循环数组队列中的余数操作数有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54879442/