Конспекти лекцій та Лабораторні роботи з дисципліни "Алгоритми та структури даних" для III курсу спеціальності 121 "Інженерія програмного забезпечення" ОКР "Фаховий молодший бакалавр" Херсонського політехнічного фахового коледжу Державного університету "Одеська політехніка"
Отримати навички роботи з типами даних в мовах програмування C та С++
Персональний комп’ютер, Visual Studio 2008 або інша середа розробки для мови C++
Зв’язний список — це динамічна структура даних, яка складається з послідовності вузлів (елементів), кожен з яких містить дані та один або декілька покажчиків (посилань) на інші вузли. Основна перевага зв’язних списків — можливість ефективно додавати та видаляти елементи в будь-якому місці списку без необхідності переміщення інших елементів.
Масиви | Зв’язні списки |
---|---|
Фіксований розмір | Динамічний розмір |
Швидкий доступ за індексом | Послідовний доступ |
Вставка/видалення — повільно (зсув) | Вставка/видалення — швидко (зміна покажчиків) |
Дані розташовані послідовно в пам’яті | Дані можуть бути розкидані в пам’яті |
struct Node {
string val;
Node* next;
Node(string _val) : val(_val), next(nullptr){}
};
new
у C++ або malloc
у C).delete
у C++ або free
у C).Переваги:
Недоліки:
У двозв’язному списку кожен вузол має два покажчики: на наступний і попередній вузол. Це дозволяє ефективно переміщатися в обох напрямках, але ускладнює реалізацію та збільшує витрати пам’яті.
struct DNode {
string val;
DNode* prev;
DNode* next;
DNode(string _val) : val(_val), prev(nullptr), next(nullptr) {}
};
У кільцевому списку останній вузол вказує на перший, що дозволяє організувати циклічний обхід елементів.
void clear() {
while (!is_empty()) {
remove_first();
}
}
[дані|*] -> [дані|*] -> [дані|*] -> nullptr
Завантажити Visual Studio 2008. Знайдіть на робочому столі ярлик з Visual Studio 2008 або Пуск → Всі програми→ Microsoft → Microsoft Visual Studio 2008.
Створити новий проект «Visual C++ (консольное приложение Win32)». Файл → Cтворити → Проект, тип проекту «Консольное приложение Win32».
Перевірити роботу прикладів, пояснити їх роботу
Розв’язати задачу згідно з варіантом. Створити динамічний однозв’язний список, додати основні операції по роботі зі списком. Використати об’єктно-орієнтований підхід. Для кожного елементу списку обрати структуру відповідно до варіанту.
Варіант 1. Описати структуру з ім’ям Student, що містить такі поля:
Варіант 2. Описати структуру з ім’ям PassengerPlane, що містить такі поля:
Варіант 3. Описати структуру з ім’ям Train, що містить такі поля:
Варіант 4. Описати структуру з ім’ям Marsh, що містить такі поля:
Варіант 5. Описати структуру з ім’ям Note, що містить такі поля:
Варіант 6. Описати структуру з ім’ям Znak, що містить такі поля:
Варіант 7. Описати структуру з іменем Price, що містить такі поля:
Варіант 8. Описати структуру з ім’ям Order, що містить такі поля:
Варіант 9. Описати структуру з ім’ям Student, що містить такі поля:
Варіант 10. Описати структуру з ім’ям PassengerPlane, що містить такі поля: