gpt4 book ai didi

java - 帮助尝试理解圆形阵列中的模运算

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:51 25 4
gpt4 key购买 nike

我有一个小问题试图弄清楚如何计算模运算。我正在建立一个队列,所以我有一个圆形数组。我不知道这个模运算是如何工作的。

给定 q:一个长度为 5 个元素的字符数组,MAX 常量给出数组“5”的最大长度rare 是一个整数,代表数组 q 中的第一个可用点

    public void enqueue(Character c)throws FullQueueException{

if(size()== MAX -1){ //if only 1 place left, is full, throw exc

throw new FullQueueException("Queue is full");
}
q[rare]=c;
rare=(rare+1)%MAX;
}

现在,假设罕见的“第一个空位”是 3,方法完成后罕见的值是多少?这是我没有得到的,rare=(rare+1)%MAX 表示 rare=4%5,它给出 rare=0,8。

方法大小相同:

public int size() {

return (MAX - front + rear) % MAX;
}

给定,front,一个代表数组中第一个元素的 int 变量假设 front 为 1 和 rare 4,所以数组中有 3 个元素,所以大小为 (5-1+4)%5 即 8%5 给出 1.6,而实际大小为 3有什么建议吗?这可能比 Java 更数学,但你们中的一些人之前可能遇到过同样的疑问。谢谢!

最佳答案

我认为您对模运算的作用有点困惑。它给出除法后的整数余数。所以从你的例子来看。

4 % 5 = 4(因为 4/5 为 0,余数为 4)

8 % 5 = 3(因为 8/5 是 1 余数 3)

如果没有看到您的其余实现,很难进一步解释为什么使用模数,但它看起来基本上是用来确保您的圆形阵列环绕。即,当您到达数组的末尾时(比如索引 7,最大大小为 8 的数组,您想要的下一个值将是第一个元素,即 8%8 或 0)。

关于java - 帮助尝试理解圆形阵列中的模运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com