- •Лекція 1. Структури даних. Основні визначення та поняття
- •1.1. Термінологія
- •1.2. Типи даних
- •1.3. Рівні організації даних
- •1.4. Представлення даних
- •1.5. Класифікація структур даних
- •1.6. Основні операції над структурами даних
- •1.7. Документування даних
- •Лекція 2. Алгоритми. Складність алгоритмів.
- •2.1. Зображення алгоритмів
- •2.2. Складність алгоритмів
- •2.3. Класи алгоритмів
- •2.4. Документація алгоритмів
- •Лекція 3. Методи сортування .
- •3.1. Задача сортування
- •3.2.Метод простої вибірки.
- •3.3. Метод бульбашки.
- •3.4.Швидкий метод сортування
- •Лекція 4 методи сортування (продовження)
- •4.5. Сортування включенням
- •4.6. Сортування розподілом
- •4.7. Сортування злиттям або об’єднанням
- •4.8. Сортування підрахунком
- •Лекція 5 нелінійні структури даних
- •5.1. Дерева
- •5.1.1. Бінарні дерева
- •5.1.2. Алгоритм обходу дерева
- •5.1.3. Зображення в пам‘яті комп‘ютера графоподібних структур
- •Лекція 6 методи сортування на деревах
- •6.1. Сортування на деревах
- •6.1.2. Пірамідальне сортування.
- •Питання до першого модуля
- •Тема 1. Основні визначення та поняття. Термінологія. Класифікація структур даних. Основні операції над структурами даних.
- •Тема 2. Поняття алоритму. Зображення алгоритмів. Алгоритмічна складність. Поліноміальна та неполіноміальна складність алгоритмів..
- •Тема 3-4. Алгоритми сортування
- •Тема 5-6. Дерева. Основні визначення та поняття. Бінарні дерева. Зображення в пам‘яті еом графоподібних структур. Алгоритми обходу дерев.Висхідні, нисхідні, змішані алгоритми обходу дерев.
- •Лекція 7. Лінійні структури даних. Стеки, черги і деки.
- •7.1. Стеки
- •7.1.1. Реалізація стеку на базі масиву
- •7.2. Черги
- •7.2.1. Використання черги в програмуванні
- •7.2.2. Реалізація черги на базі масиву
- •7.3. Деки
- •Лекція 8. Лінійні структури даних.
- •8.1. Лінійні списки . Основні визначення та поняття
- •8.2. Однонаправлені списки
- •8.3. Двонаправлені списки
- •8.4. Циклічні списки
- •Лекція 9. Масиви, множини, кортежі
- •9.1. Масиви
- •9.2. Множини I кортежі
- •9.2.1. Реалізація множини
- •9.3. Зберігання множин і масивів
- •9.4. Зберігання розріджених матриць
- •Лекція 10. Нелінійні структури даних
- •10.1. Таблиці
- •10.1.1. Зображення таблиць
- •Лекція 11. Нелінійні структури даних
- •11.1. Спискові структури
- •11.1.1. Ієрархічні списки
- •11.1.2. Організація спискових структур
- •11.2. Сіткові структури
- •Лекція 12 пошук даних.
- •12.1. Послідовний пошук
- •12.2. Двійковий пошук
- •12.2.1. Дерева порівнянь на векторній пам‘яті.
- •12.3. Прямий пошук стрічки
- •12.4. Алгоритм Кнута, Моріса і Прата пошуку в стрічці.
- •12.5. Алгоритм Бойера - Мура пошуку в стрічці
- •12.6. Алгоритми з поверненням
- •Лекція 13 пошук у таблицях
- •13.1. Пошук у таблицях з обчислюваними адресами
- •13.2. Пошук у таблицях з прямим доступом
- •13.3. Пошук у Хеш-таблицях
- •Питання до другого модуля
- •Тема 9 Лінійні списки. Основні визначення та поняття. Однонаправлені списки. Двонаправлені списки. Циклічні списки. Організація списків.
- •Тема 10 Масиви. Множини I кортежі. Зберігання множин і масивів. Зберігання розріджених матриць. Операції з масивами, множинами та кортежами
7.3. Деки
Деки - це впорядкована лінійна динамічно змінювана послідовність елементів, в якій виконуються такі умови:
1) новий елемент може приєднуватися з обох боків послідовності;
2) вибірка елементів можлива також з обох боків послідовності.
Наприклад, якщо послідовність D = D1,...,Dn зображує дек, то її елементи D1 і Dn вказують одночасно на місце включення і виключення елементів.
Деки бувають з обмеженнями з одного боку на виконання однієї з операцій (наприклад, один бік послідовності може бути закритий для вибірки елементів і відкритий тільки для приєднування, і навпаки).
Деки називають також реверсивними чергами або чергами з двома кінцями, в яких включення і виключення здійснюються з двох країв послідовності. Як і у випадку звичайних черг, для обслуговування деків також потрібно два вказівники, по одному на кожний кінець послідовності. Деки є найбільш загальною лінійною динамічною структурою даних.
Лекція 8. Лінійні структури даних.
8.1. Лінійні списки . Основні визначення та поняття
Раніше розглядались структури, в яких зв'язок між елементами заданий неявно. Однак в класі лінійних структур даних існують значно складніші зв'язні структури, в яких функціональний зв'язок між його елементами заданий явно. До таких структур належать спискові. Розглянемо найпростіші з таких структур, а саме, лінійні списки.
Список, що відображає відношення сусідства між елементами, називають лінійним. Будь-який інший список вважається нелінійним. Тип списків визначається типом зв'язків між його елементами. За кількістю зв'язків розрізняють списки одно- і багатозв'язні, а за типом функції зв'язку - лінійні і нелінійні.
Основний принцип спискової структури даних полягає в тому, що логічний порядок слідування елементів задається сукупністю посилань або вказівників. У послідовній пам'яті дані розміщуються в послідовних одиницях пам'яті і цим визначається порядок їх слідування.
Отже, поняттю "список" можна дати таке пояснення: організацію зберігання даних, при якій логічний порядок слідування даних визначається посиланнями aбo вказівниками, називають списковою організацією пам'яті, а дані, що зберігаються таким чином, - списком. Спискова організація пам'яті має також назву зчеплення.
Елемент списку складається як мінімум з двох полів - безпосереднього значення елемента даних і вказівника на наступний елемент списку. У деяких випадках значення елементів даних можуть зберігатися окремо, тоді у полі "значення" елемента списку може знаходитися вказівник на місцезнаходження цього елемента даних. Вказівники елементів списку називають також адресами зв'язку, або зв'язками.
Однією з основних властивостей списків є те, що елементи розміщуються в пам'яті довільним способом, а не в суміжних одиницях пам'яті, як у векторів.
Кожний список має свій заголовок, у якому зберігається посилання на перший елемент списку. Заголовок списку називають також іменем списку. Всі інші елементи досягаються шляхом проходження списку за допомогою вказівників.
Існує два способи зображення списків : 1) графічний (рис.8.1,а); 2) дужковий (рис.8.1,б).

Рис.8.1. Приклади зображення списків: а) графічний; б) дужковий
При графічному способі список зображується у вигляді ланцюга, кожна ділянка якого складається з двох полів - довідки і тіла. Дужковий вираз для зображення списку зручний тоді, коли списки складаються з різних типів даних і зміна одного списку не впливає на другий. Наприклад, на рис.8.1,а зображено список, у якого в полі тіла елемента записано безпосередньо значення елемента даних, а на рис.8.1,б - вказівник на місцезнаходження елемента даних. Дужковий вираз у обох випадках залишається однаковим і не відображає різного вмістимого поля тіла елементів списку.
При обробці списків найчастіше виконуються такі дії:
1) доступ до к -го елемента списку з метою аналізу і заміни його полів;
2) включення нового елемента безпосередньо перед заданим;
3) виключення заданого елемента;
4) об’єднання декількох списків в один;
5) розбиття списку на два або більше списки;
6) копіювання списку;
7) визначення кількості елементів у списку;
8) знаходження елемента за заданими властивостями;
9) пересортування або впорядкування елементів списку у висхідному або низхідному порядку.
