Особливості динамічних структур

 

Динамічні структури даних по визначенню характеризуються:

Ø відсутністю фізичної суміжності елементів структури в пам'яті,

Ø мінливістю і непередбачуваністю розміру (числа елементів) та структури в процесі її обробки.

Оскільки елементи динамічної структури розташовуються по непередбачених адресах пам'яті, адреса елемента такої структури не може бути обчисленою з адреси початкового або попереднього елемента. Для встановлення зв'язку між елементами динамічної структури використовуються покажчики, через які встановлюються явні зв'язки між елементами. Таке представлення даних у пам'яті називається зв'язаним.

Елемент динамічної структури складається з двох полів:

Ø інформаційного поля або поля даних, у якому містяться ті дані, заради яких і створюється структура; у загальному випадку інформаційне поле саме є інтегрованою структурою – вектором, масивом, записом і т.п.;

Ø поле зв'язків, у якому містяться один або кілька покажчиків, що зв'язують даний елемент з іншими елементами структури.

Коли зв'язне представлення даних використовується для рішення прикладної задачі, для кінцевого користувача "видимим" робиться тільки вміст інформаційного поля, а поле зв'язків використовується тільки програмістом-розроблювачем. Достоїнства зв'язного представлення даних:

Ø у можливості забезпечення значної мінливості структур;

Ø розмір структури обмежується тільки доступним обсягом машинної пам'яті;

Ø при зміні логічної послідовності елементів структури потрібно не переміщення даних у пам'яті, а тільки корекція покажчиків.

Разом з тим зв'язне представлення не позбавлене і недоліків, основні з яких є:

Ø робота з покажчиками вимагає, як правило, більш високої кваліфікації від програміста;

Ø на поля зв'язків витрачається додаткова пам'ять;

Ø доступ до елементів зв'язної структури може бути менш ефективним за часом.

Останній недолік є найбільш серйозним і саме їм обмежується застосовність зв'язного представлення даних, тому що для зв'язного представлення адреса елемента не може бути обчислена з вихідних даних. Дескриптор зв'язної структури містить один або кілька покажчиків, що дозволяють ввійти в структуру, далі пошук необхідного елемента виконується проходженням по ланцюжку покажчиків від елемента до елемента. Тому зв'язне представлення практично ніколи не застосовується в задачах, де логічна структура даних має вид вектора або масиву – з доступом по номеру елемента, але часто застосовується в задачах, де логічна структура вимагає іншої вихідної інформації доступу (таблиці, списки, дерева і т.д.).