![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
maxQ = 5
R = 0, F = 1
Условие пустоты очереди R < F (0 < 1)
Произведем вставку элементов A, B и C в очередь:
Insert (q, A);
Insert (q, B);
Insert (q, C);
Убираем элементы A и B из очереди:
Remove (q);
Remove (q);
Добавляем элементы D и E:
Insert (q, D);
Insert (q, E);
Убираем элементы С,D и E из очереди:
Remove (q);
Remove (q);
Remove (q).
Возникла абсурдная ситуация, при которой очередь является пустой (R < F), однако новый элемент разместить в ней нельзя, так как R = maxQ.
Одним из решений возникшей проблемы может быть модификация операции Remove (q) таким образом, что при удалении очередного элемента вся очередь смещается к началу массива.
Переменная F больше не требуется, поскольку первый элемент массива всегда является началом очереди.
Пустая очередь представлена очередью, для которой значение R равно нулю.
Произведем вставку элементов A, B и C в очередь:
Insert (q, A);
Insert (q, B);
Insert (q, C);
Убираем элемент A из очереди:
Remove (q)
Операция remove (q) может быть в этом случае реализована следующим образом:
Remove (q)
x = q(1)
for i =1 to R-1
q(i) = q(i+1)
next i
R =R-1
return
Однако этот метод весьма непроизводителен. Каждое удаление требует перемещения всех оставшихся в очереди элементов. Кроме того, операция удаления элемента из очереди логически предполагает манипулирование только с одним элементом, т. е. с тем, который расположен в начале очереди.
Другой способ предполагает рассматривать массив, который содержит очередь в виде замкнутого кольца. Это означает, что даже в том случае, если последний элемент занят, новое значение может быть размещено сразу же за ним на месте первого элемента, если этот первый элемент пуст.
Дата публикования: 2015-02-03; Прочитано: 170 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!