#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
islastWriteIndex
?4. @saka1029 это будет nextWriteIndex.