5. Вектори, списъци и редици

Вектори

Вектор АТД
 Реализация с масив


Вмъкване


Изтриване


Performance
Разширяема реализация с масив
html-5.2
html-5.3
Fixed Length Capacity Increment


Списъци

Операции, базирани на възли и позиции

Позиция АТД
Списък АТД
html-5.4

Реализация с двойно свързан списък


html-5.5 (Node)



Using Positions
html-5.6 (Positions)
html-5.7 (InvalidPositionException)

Вмъкване
Ще визуализираме операция insertAfter(р, X), която връща позиция q.

Изтриване
Ще визуализираме remove(p), където p = last().

html-5.10 (NodeList1)
html-5.11 (NodeList2)

Performance

Редици

Редица АТД
Многократно наследяване в редица АТД
html-5.12 (Sequence)

Реализация на редица АТД с двойно-свързан списък
Всички функции на списък АТД могат лесно да бъдат реализирани да се изпълняват за време O(1).

html-5.13 (NodeSequence1)
html-5.14 (NodeSequence2)

 Реализация на редица АТД с масив



Сравнения на реализациите на редица АТД


Operation
Array
List
size, isEmpty
1
1
atRank, rankOf, elemAtRank
1
n
first, last, before, after
1
1
replaceElement, swapElements
1
1
replaceAtRank
1
n
insertAtRank, removeAtRank
n
n
insertFirst, insertLast
1
1
insertAfter, insertBefore
n
1
remove
n
1


Итератори

Функции на итератора
html-16 (ObjectIterator)

STL итератори
html-17 (STLiterator)


Йерархия на редица АТД

Функции на контейнер
Контейнер е структура от данни, която съхранява и организира колекция от обекти, наречени елементи на контейнера, и осигурява достъп до тях чрез функциите на абстрактен тип данни (АТД).

Контейнер АТД
Функции на контейнера са:
Проверяеми (inspectable) контейнери
 Контейнери, които не предоставят функции за актуализации, се наричат проверяеми контейнери.

Структура на наследяване за редица АТД

InspectableSequence.cpp