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

4.2 Послідовне і зв’язне розподілення даних в пам’яті еом.

4.2.1 ПОСЛІДОВНИЙ РОЗПОДІЛ В ПАМ'ЯТІ.

При послідовному розподілі в пам'яті список розміщується в суміжних елементах пам'яті.

Переваги послідовного розподілення:

1. Можливість безпосередньої адресації потрібної комірки, оскільки номер комірки легко обчислюється.

2. Економія пам'яті: елемент використовується лише для зберігання інформації.

Недоліки послідовного розподілення:

1. При включенні/видаленні елементу в середині списку необхідно зрушувати велику кількість елементів.

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

4.2.2 Зв'язаний розподіл в пам'яті.

Формат елементу

inf

ss

inf- поле інформації;

S - поле заслання на наступний елемент, розмір відповідає розмірності адреси в даній системі.

Переваги зв'язного розподілення:

1. Довільне розміщення елементів в пам'яті (відсутня проблема фрагментації).

2. Легко виробити вставку/видалення із списку.

Недоліки послідовного розподілення:

1. Більше займаний об'єм пам'яті у зв'язку з необхідністю зберігати адреси.

2. Неможливість прямого доступу до будь-якого елементу.

4.3 Лінійні та нелінійні структури даних.

Структури даних по їхньому внутрішньому представленню можна розділити на лінійні і більш складні (нелінійні) структури. До лінійних структур можна віднести такі як: списки, стеки, черги, деки та інші. До нелінійних структур відносяться деревоподібні структури (tree structure) і багатозв'язані структури (multilinked structure).

4.3.1 Лінійні струтури даних

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

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

  • Одержання доступу до k-го елементу множини для зчитування і/чи зміни його значення

  • Вставка нового елемента множини після k-го

  • Видалення k-го вузла множини

  • Об'єднання в одну множину двох чи більш інших

  • Розбивка множини на дві чи більш підмножини

  • Створення копії множини

  • Визначення кількості елементів множини, находження максимального і мінімального

  • Упорядкування елементів множини

  • Пошук елемента множини з даним значенням.

Списки - це дискретні, зв'язані, динамічні, рекурсивні інформаційні структури.

Для списків характерно:

Складаються з елементів того самого типу. Тип елементів може бути будь-яким.

Зв'язок між елементами і доступ до списків здійснюється за допомогою типізованих вказівників. При цьому, на ряду з інформацією кожен елемент списку повинний мати вказівники на наступний чи попередній, або на наступний і попередній елементи списку.

Кількість елементів списку заздалегідь не задається. Воно може змінюватися в процесі виконання програми. Розмір одного елемента списку не може перевищувати 64 Кбайт.

При описі типу - список, використовується рекурсія.

Доступ до елементів списку послідовний.

Списки можуть бути однозв'язними і двохзв'язними. Так само серед лінійних списків виділяють циклічно зв'язні списки. Розглянемо їх.