Что происходит с очередью, когда она заполнена, за исключением первого элемента из-за операции удаления из очереди?
Мой учитель привел мне такой пример: рассмотрим стек максимального размера 4. Показать массив очереди, передние и задние переменные, после выполнения следующих операций: enqueue(5), enqueue(10), dequeue(), enqueue(15), enqueue(20), enqueue(25), enqueue(30), dequeue(), dequeue()
.
Он дал ответ:
[25, X, X, 20]
, спереди = 3 и сзади = 1.
Я в порядке с первыми 6 операциями, но с тех пор я застрял. Вот моя работа на данный момент:
Initial queue:[X, X, X, X] with front = 0; rear = -1
enqueue(5): [5, X, X, X] with front = 0; rear = 0
enqueue(10): [5, 10, X, X] with front = 0; rear = 1
dequeue(): [X, 10, X, X] with front = 1; rear = 1
enqueue(15): [X, 10, 15, X] with front = 1; rear = 2
enqueue(20): [X, 10, 15, 20] with front = 1; rear = 3
Что происходит с enqueue(25)
тогда? Единственный способ сделать возможным ответ, который он дал, это поставить его на первое место, сделав [25, 10, 15, 20]
, но я действительно думал, что если очередь переполнена, то мы либо отрицаем операцию, либо расширяем размер массива (чтоон не позволяет).