#c #stack #queue
#c #стек #очередь
Вопрос:
У меня есть циклический массив, который автоматически удваивает его размер при заполнении. Однако я не уверен, как обрабатывать постановку в очередь нового объекта после удвоения размера массива.
Комментарии:
1. Если вы успешно удвоили размер очереди (при сохранении существующих элементов), то добавление элемента не должно отличаться от того, что было до его заполнения.
2. Как программа узнает, что Rear находится на 5-й позиции в массиве, а Rear-1 на самом деле находится на 2-й позиции?
3. Я предполагаю, что ЗАДНЯЯ часть — это входной конец очереди, а ПЕРЕДНЯЯ — выходной конец? Затем, после увеличения размера массива, вам нужно будет переместить элементы между интерфейсом и старым размером на разницу между новым и старым размерами и увеличить НАЧАЛЬНУЮ позицию на ту же величину. Тогда в ЗАДНЕЙ части есть место для нового объекта.
4. @REDBEAN Этот вопрос не имеет ничего общего с добавлением нового элемента. Единственная проблема в этом вопросе заключается в том, как увеличить очередь, какой на самом деле должен быть заголовок вопроса. Просто нарисуйте пример и проработайте детали. Вы знаете, где находятся передняя и задняя части. Все элементы между ними должны оставаться последовательными в новой, большей очереди, с разрывом на другой стороне. Это должно быть просто.