Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2023
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Кафедра АПЕПС Алгоритмізація та програмування 2: . Процедурне програмування ЗВІТ До лабораторної роботи № 4 «Списки» Варіант №24 Дата «31» Травня 2022 ЗАВДАННЯ: 1. Дослідити особливості створення одно- та дво-направлених списків. 2. Вивчити і реалізувати механізми додавання нових записів у список,  пошуку записів у списку за певними полями, видалення записів зі списку та редагування знайдених записів, а також збереження всього списку у файлі та зчитування списку із файлу до пам’яті з відновленням всіх зв’язків. 3. Розробити Блок-схему програмного алгоритму. 4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій.   РЕЗУЛЬТАТ РОБОТИ: 1. Роздрукувати (вивести на екран) попередньо сформовані та підготовлені для запису в файл дані. 2. Роздрукувати (вивести на екран) результат виконання операції читання даних із файлу. 3. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас. 4. Програмний код (відкритий для редагування) розмістити на сайті Repl.it (посилання виключно через кнопку «+Invite »). Теоретичні відомості Структурою називається сукупність змінних, об’єднаних у єдине ціле, наприклад: struct myStruct { int i, j, k; double x, y; char s[32]; }; Декларація змінної в такому випадку буде мати вигляд: myStruct ss; Але значно частіше для цього застосовують динамічне створення таких структур: myStruct *pp; pp = malloc(sizeof(myStruct)); В такий спосіб будуються списки або більш складні конструкції. В такому підході використовується той факт, що полями структури можуть бути вказівники на таку ж структуру, наприклад для одно- або двонаправленого списку: struct data { // будь-які дані необхідні для конкретної задачі }; struct listElem { data dat; // дані в конкретному елементі списку listElem *next; //вказівник на наступний елемент списку listElem *prev; //вказівник на попередній елемент списку, якщо список двонаправлений } Однонаправлений список має тільки вказівник на наступний елемент списку, а двонаправлений має два вказівника на наступний і попередній. В однонаправленому списку можна рухатись лише від голови списку до хвоста, а в двонаправленому і від хвоста до голови. listElem *head = 0; // декларований вказівник на перший елемент списку listElem *curr = 0; // допоміжний вказівник, що використовується // для руху по списку Тепер можна будувати список із довільного числа елементів, зв’язаних між собою вказівниками. void addElem(listElem *h) { // Додає новий елемент в голову списку listElem* t; If (!h) { h = malloc(sizeof(listElem)); // Створення першого елементу списку h->next = 0; h -> prev=0; } else { // додавання нового елементу перед “головою” списку t = malloc(sizeof(listElem)); t->next = h; t->prev = 0; h ->prev = t; h = t; }; getData(h->dat); // функція заповнення структури даними }; Видалення списку відбувається у зворотньому порядку. Для доступу до списку необхідно, щоб був хоча б один вказівник на нього. У випадку однонаправленого списку це повинен бути обов’язково вказівник на “голову” списку, бо в однонаправленому списку неможливо перейти до попереднього елементу, а в двонаправленому хоча і варто дотримуватись цього ж правила, але не обов’язково, бо по такому списку можна рухатись в обох напрямках. Якщо завдяки помилковому коду раптом зникають всі вказівники на список – він стає недоступним, але продовжує займати пам’ять в купі, що приводить до досить складної для аналізу помилки, яка зветься “витік пам’яті”. Варіант завдання / Результати програми Вивід на екран монітора результату / / Висновок: Під час виконання цієї лабораторної було досліджено  особливості створення одно- та дво-направлених списків. Вивчено і реалізовано механізми додавання нових записів у список, пошук записів у списку, видалення записів, та редагування знайдених записів, а також збереження всього списку у файлі та зчитування списку із файлу до пам’яті з відновленням всіх зв’язків Результати були виведені на екран. Посилання на repl.it: https://replit.com/join/twmzsghucp-tr-15shiepietko
Антиботан аватар за замовчуванням

08.05.2023 11:16

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!