ЛІНІЙНІ ОДНОЗВ’ЯЗНІ ТА ДВОЗВ’ЯЗНІ СПИСКИ
Інформація про навчальний заклад
ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
ЗІ
Кафедра:
Не вказано
Інформація про роботу
Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування складних алгоритмів
Частина тексту файла
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
“КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ
імені ІГОРЯ СІКОРСЬКОГО”
ЗВІТ
з лабораторної роботи №5
з навчальної дисципліни “Програмування складних алгоритмів”
Тема:
«ЛІНІЙНІ ОДНОЗВ’ЯЗНІ ТА ДВОЗВ’ЯЗНІ СПИСКИ»
Варіант 18
Мета: Метою лабораторної роботи є ознайомитися з основами роботи з двозв’язним списком, однозв’язним списком, стеком та чергою.
Теоретична частина
Лінійнийоднозвв’язний список
Лінійний список – цединамічна структура даних, кожнийелементякої за допомогоювказівниказв’язується з наступнимелементом.
З визначеннявипливає, щокоженелемент списку містить поле даних (Data) (вономожематискладну структуру) і поле посилання на наступнийелемент (next). Поле посиланняостанньогоелемента повинно міститипорожнійпокажчик (NULL).
Так як посиланнялишеодне (тільки на наступнийелемент), то такий список є однозв’язним.
Коли говорять про лінійний список, то, як правило, мають на увазісамеоднозв’язний список.
Двобічнозв'язаний список — вид зв'язаного списку, у якому посилання в кожному вузлівказують на попередній і на подальший вузол у списку.
Якщов спискупісляостанньогоелементайде перший, то такий список називається кільцевимдвобічнозв'язаним списком. Тобто, поле prev голови списку вказує на хвіст списку, а поле next хвоста списку вказує на голову списку.
По двобічнозв'язаному списку можнапересуватисяв будь-якомунапрямку — як від початку до кінця, так і навпаки. Для ньогопростішепроводити видалення і перестановку елементів, оскількизавждивідоміадреси тих елементів списку, вказівник якихспрямований на змінюваний елемент.
Завдання до лабораторної роботи:
1. Створити лінійний однозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його, а попередній та настуні поміняти місцями. Виконати завдання згідно варіанту.
2. Створити двозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його. Виконати завдання згідно варіанту з двозвязним списком.
18. Створити стек цілих чисел. Визначити чого більше – парних чи непарних чисел.
Результат роботи
/
Висновок: Було написано програму, яка перевіряє два списки на наявність ключа, вказаного користувачем, і видаляє при знаходженні. Потім програма рахує кількість парних і непарних чисел в обох списках і порівнює їх.
Програмний код
https://replit.com/join/grgnrhpoac-okseniait
#include
#include
#include
#include
#include "List2.h"
#include "List1.h"
using namespace std;
int iteration = 0;
#define SIZE 10
int main() {
srand(time(NULL));
//Однозв'язний список
cout << "Однозв'язний список\n";
List1 lst1;
for(int i = 0;i < SIZE;i++){
lst1.pushback(rand()%50);
}
for(int i = 0;i < lst1.GetSize();i++){
cout << lst1[i] << " ";
}
int key;
cout << "\nВведіть ключ: ";
cin >> key;
for(int i = 0;i < lst1.GetSize();i++){
if(lst1[i] == key){
lst1.remove(i);
int storage, start[i], scount = 0, end[lst1.GetSize() - i], ecount = 0;
for(int j = 0;j < lst1.GetSize();j++){
if(j < i){
start[scount] = lst1[j];
scount++;
}
else{
end[ecount] = lst1[j];
ecount++;
}
}
scount = 0;
ecount = 0;
for(int j = 0;j < lst1.GetSize();j++){
if(j < lst1.GetSize() - i){
lst1[j] = end[ecount];
ecount++;
}
else{
lst1[j] = start[scount];
scount++;
}
}
break;
}
}
for(int i = 0;i < lst1.GetSize();i++){
cout << lst1[i] << " ";
}
cout << endl;
/////
int even[SIZE], odd[SIZE], ecount = 0, ocount = 0;
auto start1 = chrono::high_resolution_clock::now();
for(int i = 0;i < lst1.GetSize();i++){
if(lst1[i] % 2 == 0){
// even[ecount] = lst1[i];
ecount++;
iteration++;
}
else if(lst1[i] % 2 != 0){
odd[ocount] = lst1[i];
ocount++;
iteration++;
}
}
auto finish1 = chro...
Завантаження файлу
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше