Я постараюсь объяснить свой вопрос как можно лучше. Допустим, у нас есть круговой буфер, который выглядит следующим образом:
A
F B
E C
D
Итак, хвост будет 5, а голова будет 0 ( мы ничего не снимали с очереди, мы только помещали в очередь элементы в cb.)
Теперь, допустим, я добавлю элементы X, Y & Z, поэтому буфер перезапишет значения после того, как я поставлю в очередь элементы , мой буфер должен выглядеть так:
X
F Y
E Z
D
Теперь хвост будет равен 2, а голова - 0. Теперь я хочу удалить элемент из буфера. Итак, мой буфер будет выглядеть так:
None
F Y
E Z
D
Теперь я хочу снова поместить что-то в буфер. И вот мой вопрос: Если хвост продолжит перезаписывать элементы, пока не достигнет конца, а потом, когда он достигнет конца, и я попытаюсь поставить в очередь что-то, он перезапишет значение «Нет», или если он прыгнет прямо в Значение «None», поскольку в этом месте буфер пуст и непосредственно перезаписывается значение «None» новым элементом?
Если ответ на вопрос заключается в том, что хвост должен сохранять значения перезаписи до он достигает конца, и после его окончания, когда я попытаюсь поставить в очередь новый элемент, он перезапишет значение «Нет», я знаю, как его реализовать, , но , если ответ является то, что хвост должен перезаписать значение «None» напрямую, вот еще один вопрос:
Давайте предположим, что хвост должен перезаписать значение «None» напрямую, путем перехода к 0-му индексу и перезаписи это с элементом, скажем, «R», мой буфер будет выглядеть так:
R
F Y
F Z
D
Теперь хвост равен 0, а голова остается неизменной, 1. Теперь, вопрос on: Когда я захочу поставить в очередь новые элементы, зная, что хвост в моем текущем состоянии равен 0, должен ли он продолжать перезаписывать значения из 0-го индекса или go обратно в индекс, где он был до то есть 2?