Размер круговой очереди с использованием mod

#java #arrays #queue #circular-queue

#java #массивы #очередь #круговая очередь

Вопрос:

Допустим, я реализую круговую очередь с использованием массива. Как я мог бы рассчитать размер очереди? Под размером я подразумеваю количество элементов между передней и задней частью. Я хочу использовать операцию по модулю.

У меня есть емкость массива и позиции передней и задней части очереди. Я не знаю, что теперь делать.

Ответ №1:

Как я мог бы рассчитать размер очереди?

Я бы использовал

 size = (start - end   mod) % mod;
  

Это предполагает, что буфер никогда не заполняется полностью. Предупреждение заключается в использовании start и end, которые не модифицируются

 size = lastWriteIndex - nextReadIndex;
  

Вы можете изменить эти значения при поиске индекса.

Комментарии:

1. size = (end - start mod) % mod; ?

2. @saka1029 для циклического буфера начальный индекс может быть перед конечным индексом.

3. Вы имеете в виду start is lastWriteIndex ?

4. @saka1029 это будет nextWriteIndex.