Опашка (абстрактен тип данни): Разлика между версии

Изтрито е съдържание Добавено е съдържание
RossyB (беседа | приноси)
Редакция без резюме
RossyB (беседа | приноси)
Ред 4:
== Статична реализация ==
[[Файл:QUEUE-STATIC.jpg|рамка|вдясно|Циклично движение на опашка в масив.]]
Статичната опашка се реализира с помощта на [[Масив (програмиране)|масив]]. В даден момент началото и краят на опашката сочат към определени индекси от масива. Когато се добавя нов елемент той се поставя на индекса след края на опашката и краят вече сочи към новия елемент. Когато се премахва началото на опашката, елементът на началния индекс се изтрива и началото започва да сочи към следващия индекс. По този начин с добавяне и извличане на елементи от опашката тя се движи към края на масива. В даден момент краят на опашката достига до последния индекс на масива и се оказва, че размерът на масива не е достатъчен въпреки, че опашката не запълва всичките му елементи. За да се реши този проблем при следващото добавяне на елемент в края на опашката, той се поставя на началния индекс на масива. По този начин се свързват началото и края на масива, и опашката може да обикаля безкрайно в него. АкоВ дължинатаначалото наиндексите опашкатаза (брояначало наи елементитекрай всочат нея)нулевия станеелемент. равнаВ напроцеса, предварителноако заделенияотново бройсе наокажат елементиравни втова масива нямаможе да могатозначава да2 бъдат добавяни нови елементи. Това налага копиране на опашката в нов масив с по-голям размер.неща:
- ако равенството се е получило след премахване на елемент, опашката е останала празна.
- ако равенството се е получило след добавяне на елемент, то опашката е препълнена.
В този случай дължината на опашката (броя на елементите в нея)е станала равна на предварително заделения брой на елементи и в масива няма да могат да бъдат добавяни нови елементи. Това налага копиране на опашката в нов масив с по-голям размер.
 
== Динамична реализация ==
[[Файл:QUEUE-DYNAMIC.jpg|рамка|вдясно]]