java - 循环数组队列中的余数操作数有什么意义

标签 java arrays data-structures queue

我正在研究如何编写循环数组队列,入队方法的一部分让我感到困惑,特别是 back 变量变为 (back+1) 的部分%大小

void enqueue(char x) {
    Q[back] = x
    back = (back+1) % SIZE;
}

得到余数有什么意义呢?我不明白。 (该数组名为 Qint front = -1int back = 0int size = 0 >)

最佳答案

由于这是一个循环队列,一旦队列末尾到达数组末尾,如果添加另一个元素,它应该添加到数组开头。

数组的有效索引为 0SIZE - 1(假设 SIZE == Q.length)。

因此,在 Q[back == SIZE-1] 添加元素后,队列的末尾应变为 (back+1) % SIZE == (SIZE- 1+1)%大小==0

附注我不确定您是否包含 enqueue 方法的完整代码。在添加新元素之前,您似乎没有检查队列是否已满。

关于java - 循环数组队列中的余数操作数有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54879442/

相关文章:

data-structures - 纯链表、链表和双链表 : When and Why?

java - xml 字符串比较的字符串比较失败

java - QuickSort 分区出现异常

javascript - 数组未正确填充日期

c++ - 从数组中删除一个单元格给我运行时错误

javascript - 传播 getElementsByClassName 或 querySelectorAll 会在 TypeScript 中产生错误

c - 将用户输入值分配给分配的内存

Graal 编译的 JavaFX 应用程序中的 java.lang.ClassNotFoundException

Java - 如何获取已安装 RPM 包的列表

data-structures - 有没有一种数学方法可以计算动态数组的最佳增长因子?