Очередь с круговым буфером является удобной и естественной абстрактной структурой данных для моделирования обхода элементов по кругу в условиях задачи Иосифа по алгоритму, который можно условно назвать алгоритмом кругового обслуживания. Алгоритм кругового обслуживания составляет следующая последовательность шагов:

  1. Заготовить пустую очередь с размером кольцевого буфера на 1 больше, чем число обслуживаемых элементов.
  2. Применяя примитив ENQUEUE соответствующее число раз, разместить номера всех обслуживаемых элементов в кольцевом буфере очереди, что эквивалентно расположению элементов по кругу.
  3. Чередуя вызовы примитивов DEQUEUE и ENQUEUE необходимое число раз, добиться чтобы в голове очереди оказался элемент с желаемым номером.
  4. Инициализировать счетчик шагов по кругу значением 1.
  5. Чередовать вызовы примитивов DEQUEUE и ENQUEUE при увеличении значения счетчика шагов, пока оно не достигнет заданного порогового значения. Эти действия эквивалентны обходу круга, чтобы достигнуть элемент, который нужно удалить из очереди. Исключаемый элемент будет находиться в голове очереди.
  6. Используя процедуру DEQUEUE удалить элемент из головы очереди и распечатать его номер.
  7. Проверить выполнение условия пустой очереди (tail=head). Если в очереди еще остались элементы, перейти на шаг 4 для продолжения анализа очередности удаления элементов. Иначе, если очередь пуста, завершить выполнение алгоритма.