
- •Лекція 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 кортежі. Зберігання множин і масивів. Зберігання розріджених матриць. Операції з масивами, множинами та кортежами
10.1.1. Зображення таблиць
Структуру зберігання таблиць вибирають в залежності від типу операцій, що виконуються над ними. Для внутрішніх таблиць може бути вибрана довільна структура, яку можна побудувати в оперативній пам‘яті. Залежно від методу доступу до елементів таблиці поділяються на послідовні, деревоподібні і з обчислювальними адресами. Останні, в свою чергу, поділяються на таблиці з прямим доступом і хеш-таблиці. Всі, крім таблиць з прямим доступом, можна зберігати у векторній і зчепленій пам'яті.
У найпростіших послідовних таблиць для зберігання одного запису потрібно щонайменше одну ділянку пам'яті з двома полями: КЛЮЧ і значення. Таблиця може зображуватися як вектор із цих ділянок, або як лінійний список.
Деревоподібні таблиці або таблиці, організовані як дерева порівнянь, також можуть бути зображені у векторній і зчепленій пам'яті. У першому випадку елементи даних повинні бути впорядковані за значенням ключа, у другому - зображені у вигляді двозв‘язного списку. Для цього до кожного елемента таблиці повинно бути приєднано два вказівники - відповідно на ліве і праве піддерево. Тоді елемент таблиці перетворюється до такого:
де ЛВ, ПВ - відповідно лівий і правий вказівники.
Лекція 11. Нелінійні структури даних
11.1. Спискові структури
Список, що містить всі підсписки, які відходять від нього, називають списковою структурою. Ці структури являють собою узагальнення лінійних списків.
Спискові структури описуються трьома характеристиками.
1. Порядок. Над елементами списку задано транзитивне відношення, що визначається послідовністю, в якій елементи з‘являються в середині списку. Наприклад, у списку (х,у,z) елемент x передує у і у передує z. Список (x,у,z) не еквівалентний списку (у,z,x). При графічному зображенні списків порядок визначається горизонтальними стрілками. При цьому розуміється, що елемент, з якого виходить стрілка, передує елементу, в який заходить стрілка.
2. Глибина. Це максимальний рівень, який приписується елементам в середині списку, або в середині всякого підсписку в списку. Рівень елемента визначається в залежності від кількості підсписків, що містяться в середині списку, тобто числом пар дужок, якими оточується елемент.
Наприклад, на рис. 11.1 графічно зображений список (а,(b,c ,d), e,(f,g)) у якого рівень елементів a i e дорівнює одиниці, а елементів b,c,d,f,g - двом. Глибина цього списку дорівнює двом.
При графічному зображенні списку поняття глибини і рівня полегшуються для розуміння, якщо кожному одиночному елементу приписати деяке число k. Значення k для елемента x , тобто k(x) , дорівнює кількості вертикальних стрілок, які необхідно пройти для того, щоб досягти даного з першого елемента списку. Наприклад, k(a)=0, k(b)=1 (рис. 11.1). Тоді рівень елемента задається відношенням k(x)+1, а глибина списку дорівнює максимальному значенню рівнів серед усіх рівнів елементів списку.
Рис.11.1. Спискова структура
Наприклад, максимальний рівень елементів у списку на рис.8.6 дорівнює двом, тому глибина списку також дорівнює двом.
3. Довжина. Це число елементів списку першого рівня.
Наприклад, довжина списку (a,(b,c), d) дорівнює трьом, а списку, зображеного на рис.11.1 - чотирьом, тому що він містить чотири елементи: елемент a , підсписок (b, c, d), елемент e і підсписок (f,g).