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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Кафедра АПЕПС Алгоритмізація та програмування 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:05-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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