Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторний практикум інф сис та стр даних.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.39 Mб
Скачать

5. Результати виконання програми

Лабораторна робота № 5 Структура даних список

Мета роботи: Вивчення фундаментальної абстрактної структури даних списка. Набуття практичних навичок побудови списка, дослідження динаміки його вмісту та використання списків для розв'язання прикладних задач.

Завдання:

Завдання 5.1:

Використати для розв’язання задач клас list зі стандартної бібліотеки шаблонів STL .

1. Многочлен виду , де представити у вигляді зв’язаного списку в якому кожний вузол має три поля: одне – для коефіцієнта Сi , друге – для показника степеня ni , третє – для вказівника на наступний вузол списку. Для описаного представлення многочленів програмно реалізувати такі операції:

А) Додавання двох многочленів.

Б) Множення многочлена на одночлен.

В) Диференціювання многочлена.

2. Поліном від трьох змінних ( X , Y , Z ) представити у вигляді циклічного списку, в якому кожний вузол має п’ять полів: одне – для коефіцієнта члена поліному , друге – для показника степеня змінної X , третє – для показника степеня змінної Y, четверте – для показника степеня змінної Z, п’яте – для вказівника на наступний вузол списку. Елементи списку мають бути впорядковані спочатку по зменшенню степеня Х, пізніше по зменшенню степеня Y, а після цього по зменшенню степеня Z. Структура збереження поліномів повинна забезпечувати ефективне виконання таких операцій над ними:

А) Додавання двох поліномів.

Б) Обчислення полінома по заданим значенням X , Y , Z .

3. Написати програму для роботи з розрідженими матрицями, представленими у вигляді зв’язаних списків:

А) Транспонування розрідженої матриці, заданої у формі списків.

Б) Додавання двох матриць, заданих у формі списків.

4. Написати програму роботи з довгими числами (довгі числа – це числа, що виходять за діапазон допустимих значень будь-якого стандартного цілого або дійсного типу). Структура збереження довгих чисел повинна забезпечувати ефективну роботу з довільними (додатними і від’ємними) довгими цілими числами. Реалізувати роботу з довгими числами:

А) Додавання двох довгих чисел.

Б) Порівняння двох довгих чисел (дорівнює, не дорівнює, більше, менше).

В) Обчислення значення n!, де n > 12.

Завдання 5.2:

Побудувати динамічну структуру дани список, реалізований за допомогою вказівників.

1. Написати програму, яка будує лінійний зв’язаний список, що містить N випадкових цілих чисел з проміжку [100; 200], де N – випадкове число з проміжку [1 ; 20], а після цього переглядає список і дублює в списку всі вузли, що містять в інформаційному полі парні числа (Примітка.: дублює , тобто зразу після знайденого вузла створює ще один такий самий вузол).

2. Написати програму, яка будує лінійний зв’язаний список, що містить N великих літер латинського алфавіту, які вводяться з клавиатури, і перевіряє, чи будуть вузли списку впорядковані за алфавітом. (Примітка.: великі літери латинського алфавіту в таблиці ASCII мають номери від 65 до 90 ).

3. Написати програму, яка будує два лінійних зв’язаних списка SP1 i SP2, що містять відповідно по N1 i N2 випадкових дійсних чисел з проміжку [130; 310] і створює новий список SP3, який мiстить спiльнi елементи списків SP1 i SP2.

4. Написати програму, яка будує лінійний зв’язаний список, що містить N випадкових цілих чисел з проміжку [111 ; 222] і вилучає з нього кожний другий елемент.

5. Написати програму, яка вводить з клавіатури послідовність ненульових дійсних чисел (ввід числа 0 – признак кінця введення послідовності), будує лінійний зв’язаний список, що містить елементи цієї послідовності і розбиває побудований список на два рівних або майже рівних (якщо кількість елементів списку - непарне число) по довжині списка.

6. Написати програму, яка будує лінійний зв’язаний список, що містить N випадкових дійсних чисел з проміжку [1; 50] і інвертує побудований список, тобто робить перший елемент останнім, другий передостаннім і т.д. Виводити на екран монітора всі зміни, що будуть відбуватись у списку.

7. Написати програму, яка будує лінійний зв’язаний список List , що містить N випадкових цілих чисел з проміжку [100; 500] і створює новий список, який мiстить вузли побудованого списку List , інформаційні поля яких повторюються.

8. Написати програму, яка вводить послідовність з N випадкових цілих чисел, що належать проміжку [-10; 10], де N – випадкове число з проміжку [1 ; 20]. Всі додатні числа цієї послідовності додаються в лінійний зв’язаний список, а кожне від’ємне число вилучає зі списку відповідне додатнє число. Якщо такого числа немає у списку, то виводиться повідомлення про відсутність числа у списку. Виводити на екран монітора всі зміни, що будуть відбуватись у списку.

9. Написати програму, яка будує лінійний зв’язаний список, що містить N великих букв латинського алфавіту, які задаються випадковим чином, і перевіряє, чи перший елемент списку містить букву “А”, якщо це так, то додається ще одна буква “А” в кінець списку, якщо ні – то зі списку вилучаються всі букви “А”. Вивести отриманий результат. (Примітка: великі букви латинського алфавіту в таблиці ASCII мають номери від 65 до 90).

10. Написати програму, яка будує лінійний зв’язаний список, що містить N випадкових дійсних чисел з проміжку [30; 80] і міняє місцями значення кожних двох сусідніх елементів списку, тобто значення першого елемента міняється зі значенням другого, третього з четвертим і т.д.