Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MEGAPACK_version_final.doc
Скачиваний:
6
Добавлен:
15.09.2019
Размер:
2.34 Mб
Скачать

54. Динамічні структури даних. Списки.

Незважаючи на те, що терміни тип даних та структура даних звучать дещо схоже, проте вони мають різний підтекст.

Як говорилося раніше, тип даних - це множина значень, які може приймати змінна деякого типу. А структури даних представляють собою набір даних, можливо різних типів, що об'єднані певним чином.

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

      Лінійний список - це скінченна послідовність однотипних елементів (вузлів). Кількість елементів у цій послідовності називається довжиною списку. Наприклад : F=(1,2,3,4,5,6) - лінійний список, його довжина 6.      При роботі зі списками дуже часто доводиться виконувати такі операції :       • додавання елемента в початок списку;       • вилучення елемента з початку списку;       • додавання елемента в будь-яке місце списку;       • вилучення елемента з будь-якого місця списку;       • перевірку, чи порожній список;       • очистку списку;       • друк списку.      Основні методи зберігання лінійних списків поділяються на методи послідовного та зв'язаного зберігання.      Послідовне зберігання списків. Метод послідовного зберігання списків ґрунтується на використанні масиву елементів деякого типу та змінної, в якій зберігається поточна кількість елементів списку. 1. Ініціалізація списку (робить список порожнім). 2. Додавання нового елементу у кінець списку. 3. Додавання нового елементу в позицію pos. 4. Вилучення елемента з номером pos. 5. Отримання елемента з номером pos.      При послідовному зберіганні списків за допомогою масивів елементи списку зберігаються в масиві. Така організація дозволяє легко переглядати вміст списку та додавати нові елементи в його кінець. Але такі операції, як вставка нового елемента в середину списку чи вилучення елементу з середини списку потребують зсуву всіх наступних елементів. При збільшенні елементів масиву кількість операцій, потрібна для впорядкування списку, стрімко зростає.

     Зв'язане зберігання лінійних списків. Найпростіший спосіб зв'язати множину елементів - зробити так, щоб кожний елемент містив посилання на наступний. Такий список називається односпрямованим (однозв'язаним). Якщо додати в такий список ще й посилання на попередній елемент, то отримаємо двозв'язаний список. А список, перший та останній елементи якого зв'язані, називається кільцевим.           В даному фрагменті програми описуються декілька типів даних : elemtype - визначає тип даних лінійного списку. Можна використовувати будь-який стандартний тип даних, включаючи структури. list - визначає структуру елемента лінійного списку (val - значення, яке зберігається у вузлі, next - покажчик на наступний вузол).      Схематично лінійний односпрямований список виглядає так :

     Реалізація основних операцій : 1. Включення елемента в початок списку.

2. Видалення елемента з початку списку.

3. Включення нового елемента у список.

4. Видалення елемента зі списку.

7. Знищення списку

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]