
- •Лабораторна робота №1
- •Завдання
- •Хід роботи
- •Контрольні запитання
- •Лабораторна робота № 2
- •Завдання
- •Приклад програми
- •Контрольні запитання
- •Лабораторна робота № 3
- •Теоретичні відомості „Функції обробки рядків”
- •Завдання
- •Контрольні запитання
- •Лабораторна робота №4
- •Завдання
- •Приклад програми
- •Контрольні запитання
- •Лабораторна робота №5
- •Хід роботи
- •Варіанти
- •Контрольні запитання
- •Лабораторна робота №6
- •Завдання
- •Приклад програми
- •Контрольні запитання
- •Завдання
- •Контрольні запитання
- •Завдання
- •Контрольні запитання
- •Лабораторна робота №9
- •Завдання
- •Приклад програми
- •Приклад програми
- •Контрольні запитання
- •Лабораторна робота№13
- •Теоретичні відомості
- •Завдання
- •Завдання
- •Контрольні запитання
- •Лабораторна робота №15
- •Завдання
- •Хід роботи
- •Варіанти
- •Завдання
- •Хід роботи
- •Варіанти
- •Контрольні запитання
- •Лабораторна робота №18
- •Теоретичні відомості
- •Хід роботи
- •Лабораторна робота №19
- •Завдання
- •Хід роботи
- •Варіанти.
- •Приклад
- •Контрольні запитання
- •Лабораторна робота №21
Контрольні запитання
Які дані називаються списком?
Як реалізований зв’язок між елементами списку ?
Лабораторна робота №18
Тема : Застосування в програмах двузв’язного списку.
Мета : Навчитися використовувати динамічний розподіл пам’яті для роботи зі списками, чергами і кільцями.
Теоретичні відомості
Список - це набір елементів (найчастіше структурних змінних), розташованих у динамічній пам'яті й зв'язаних між собою з вказівниками на ці елементи. Спосіб зв'язку елементів, який застосовується, визначає тип списку. Списки бувають лінійними й кільцевими, однозв'язними й двозв’язними. Елемент однозв'язного списку містить крім безпосередньо "корисної" інформації також інформацію про наступний або попередній елемент списку. Відповідно елемент двозв’язного списку містить інформацію, як про наступний, так і про попередні елементи. Останній елемент кільцевого списку містить вказівник на перший елемент списку. Якщо список розташовується в оперативній пам'яті, то інформація для пошуку наступного об'єкта - адреса (вказівник) у пам'яті. Якщо зв'язний список зберігається у файлі на диску, то інформація про наступний елемент може включати зсув елемента від початку файлу, положення вказівника запису/зчитування файлу, ключ запису або будь-яку іншу інформацію, що дозволяє однозначно відшукати наступний елемент списку. Найпоширенішими випадками лінійного однозв'язного списку служать черга й стек. Черга - це список з таким способом зв'язку між елементами, при якому нові елементи додаються строго в кінець списку, а вибираються для обробки строго з початку. Принцип організації черги можна описати так: "першим прийшов - першим пішов" (FІFO - Fіrst Іn, Fіrst Out). Черга елементів може бути реалізована з використанням масивів, зв'язного списку або іншим способом. Щоб не обмежувати максимальне число елементів у черзі, найбільше доцільно її побудова у вигляді однозв'язного списку. Додавання нових елементів відбувається завжди в кінець списку (в "хвіст"). Останній елемент позначається особливим чином, наприклад поле вказівника на наступний елемент дорівнює NULL. Рекомендується при роботі із чергою використовувати два вказівники: один - на початок черги, а другий -на її кінець. Це спростить як вибір елементів із черги, так і їхнє додавання. Стек - це список з таким способом зв'язку між елементами, при якому нові елементи додаються строго в початок списку й вибираються для обробки також строго з початку списку (за принципом "першим прийшов - останнім пішов" (FІLO - Fіrst Іn, Last Out), тобто перший занесений у стек елемент буде оброблений останнім). Кільце - це список, елементи якого утворюють замкнуту кругову систему, тобто останній створений елемент повинен містити вказівник на перший елемент. Списки можуть бути двoнаправленими, що дає можливість обходу списків у двох напрямках. У лінійних списків у перших елементах вказівник на попередній елемент, як правило, дорівнює нулю. У двoнаправленного кільця перший елемент вказує на останній, а останній - на перший.