2016-10-09 2 views
0

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

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

ответ

1

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

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

size = (start - end + mod) % mod; 

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

size = lastWriteIndex - nextReadIndex; 

Вы можете модник этих значений, когда вы смотрите вверх индекс.

+0

'size = (end-start + mod)% mod;'? – saka1029

+0

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

+0

Вы имеете в виду 'start' is' lastWriteIndex'? – saka1029

Смежные вопросы