НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
“КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ
імені ІГОРЯ СІКОРСЬКОГО”
ЗВІТ
з лабораторної роботи №5
з навчальної дисципліни “Програмування складних алгоритмів”
Тема:
Лінійні однозв’язні та двозв’язні списки
Мета роботи: метою лабораторної роботи є ознайомитися з основами роботи з двозв’язним списком, однозв’язним списком, стеком та чергою.
Теоретична частина.
Зв’язний список є найпростішим типом даних динамічної структури,що складається з елементів (вузлів). Кожен вузол включає в себе в класичному варіанті два поля: • дані (в якості даних може виступати змінна, об'єкт класу або структуриі т. д.)• покажчик на наступний вузол в списку.Доступ до списку здійснюється через покажчик, який містить адресу першого елемента списку, званий коренем списку. За кількістю полів покажчиків розрізняють односпрямований (однозв’язний) і двонаправлений (двузв’язаний) списки. Зв’язний список, що містить тільки один покажчик на наступний елемент, називається однозв ’ язний. Зв’язний список, що містить два поля покажчика – на наступний елемент і на попередній, називається двузв’язний. Зв’язний список, в якому, останній елемент вказує на NULL, називається лінійним. Зв’язний список, в якому останній елемент пов’язаний з першим, називається циклічним.Лiнiйний список – це набiр однотипних компонентiв, якi послiдовно пов’язанi мiж собою за допомогою покажчикiв. Кожен компонент списку може складатися iз кiлькох iнформацiйних полiв та покажчика на наступний елемент.Основні операції: пошук елемента з заданими властивостями; визначення i-того елемента; додавання елемента до, або після вказаного; вилучення певного елемента зі списку; впорядкування елементів списку. Задача ‒ забезпечити максимальну ефективність обробки.Кожна змінна списку являє собою запис, оскільки складається мінімум з двох компонент: ідентифікуючого ключа (значення) та вказівника на наступний елемент. Список може бути порожнім. Список, кожен елемент якого посилається на попередній, називається однозв’язнимУ циклiчному однозв’язному списку за останнiм елементом iде перший елемент. Це означає, що у полi next останнього елемента записаноадресупершого елементу: last−> next = first.Двобічно зв’язаний (двозв’язний) список – динамічна структура даних, що складається з елементів одного типу, зв'язаних між собою у строго визначеному порядку. При цьому визначено перший та останній елементи у списку, а кожен елемент списку вказує на наступний і попередній елементи у списку. Перший лемент має попереднім елементом посилання на невизначений елемент None. Аналогічно, None буде наступним елементом для останнього елементу спискуБагатозв’язний список - список, єднальна частина елементів якого в загальному випадку містить довільну кількість покажчиків. У цьому виді списку кожен елемент входить в таку кількість однозв’язних списків, скільки він має полів зв’язку.
Завдання до лабораторної роботи:1.Створити лінійний однозв’язний список, вивести його.Якщо в списку я елемент з заданим ключем, вилучити його, а попередній та наступний поміняти місцями. Виконати завдання згідно варіанту. 2.Створити двозв’язний список, вивести його. Якщо в списку є елемент із заданий ключем, вилучити його. Виконати завдання згідно варіанту з двозв’язним списком.
Завдання за варіантом:
/
Опис алгоритму
Створив однозв’язний та двозв’язний списки. Написав фукнції для пошуку в списку, для видалення заданого користувачем елементу, для зміни місцями елементів, для пошуку максимального елемента, для додавання елементу, для виводу списку, ініціалізції «голови» списку. В мейні введення користувачем кулькості елементів, заповнення випадковими числами до 15, вивід списку, запит на введення елемента, що потрібно знайти, видалення та вивід отриманого списку, функція для зміни елементів місцями, вивід списку, пошуку максимального елемента, його виведення, функція на видалення числа, що йде за ним та вивід остаточного списку.
Результати роботи програми
Однозв’язний
/
Двозв’язний
/
Програмний код
Однозв’язний: https://replit.com/join/kphgbcltal-ironfire2535
Двозв’язний: https://replit.com/join/ubctuuantu-ironfire2535
Висновок:
В результаті виконання лабораторної роботи №4 я ознайомився з основами роботи з двозв’язним списком, однозв’язним списком, стеком та чергою.. Створив лінійний однозв’язний список, вивів його. Виконав завдання згідно варіанту. Створим двозв’язний список, вивів його. Виконав завдання згідно варіанту з двозв’язним списком.