From 9b2017768f0c07fcf2ef90d6c55f19b9552cad3a Mon Sep 17 00:00:00 2001 From: Anton Chernikov Date: Thu, 22 Nov 2018 23:13:02 +0300 Subject: [PATCH 1/2] Added first version of test 2.2 --- sem1/test2/test2.2/list.cpp | 88 +++++++++++++++++++++++++++++++++++++ sem1/test2/test2.2/list.h | 12 +++++ sem1/test2/test2.2/main.cpp | 22 ++++++++++ 3 files changed, 122 insertions(+) create mode 100644 sem1/test2/test2.2/list.cpp create mode 100644 sem1/test2/test2.2/list.h create mode 100644 sem1/test2/test2.2/main.cpp diff --git a/sem1/test2/test2.2/list.cpp b/sem1/test2/test2.2/list.cpp new file mode 100644 index 0000000..299203e --- /dev/null +++ b/sem1/test2/test2.2/list.cpp @@ -0,0 +1,88 @@ +#include +#include "list.h" +using namespace std; + +struct ListElement +{ + int value; + ListElement *next; +}; + +struct List +{ + ListElement *first; +}; + +void swap(ListElement *first, ListElement *second) +{ + int pilot = first->value; + first->value = second->value; + second->value = pilot; +} + +void sort(ListElement *element) +{ + if (element->next) + { + if (element->value > element->next->value) + { + swap(element->value, element->next->value); + } + sort(element->next); + if (element->value > element->next->value) + { + swap(element->value, element->next->value); + } + sort(element->next); + } +} + +void sortList(List *list) +{ + sort(list->first); +} + + +List *createList() +{ + return new List {nullptr}; +} + +void addElement(ListElement *&element, int value) +{ + if (!element) + { + element = new ListElement {value, nullptr}; + } + else + { + addElement(element->next, value); + } +} + +void addElement(List *list, int value) +{ + addElement(list->first, value); +} + +void deleteList(List *list) +{ + while (list->first) + { + ListElement *current = list->first; + list->first = current->next; + delete current; + } + delete list; +} + +void displayList(List *list) +{ + ListElement *current = list->first; + while (current) + { + cout << current->value << " "; + current = current->next; + } + cout << endl; +} diff --git a/sem1/test2/test2.2/list.h b/sem1/test2/test2.2/list.h new file mode 100644 index 0000000..571fc93 --- /dev/null +++ b/sem1/test2/test2.2/list.h @@ -0,0 +1,12 @@ +#pragma once + +struct ListElement; +struct List; + +List *createList(); +void deleteList(List *list); + +void swap(ListElement *first, ListElement *second); +void sortList(List *list); +void addElement(List *list, int value); +void displayList(List *list); diff --git a/sem1/test2/test2.2/main.cpp b/sem1/test2/test2.2/main.cpp new file mode 100644 index 0000000..8813818 --- /dev/null +++ b/sem1/test2/test2.2/main.cpp @@ -0,0 +1,22 @@ +#include +#include "list.h" +using namespace std; + +int main() +{ + List *list = createList(); + cout << "Enter number of elements: "; + int amount = 0; + cin >> amount; + cout << "Enter values:" << endl; + for (int i = 0; i < amount; i++) + { + cout << i + 1 << ". "; + int value = 0; + cin >> value; + addElement(list, value); + } + sortList(list); + displayList(list); + deleteList(list); +} From fe5d5e6bbdf877622a97c7c8a196e595fa8a9ea1 Mon Sep 17 00:00:00 2001 From: Anton Chernikov Date: Thu, 22 Nov 2018 22:40:21 +0300 Subject: [PATCH 2/2] Corrected typos --- sem1/test2/test2.2/list.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/sem1/test2/test2.2/list.cpp b/sem1/test2/test2.2/list.cpp index 299203e..53d0546 100644 --- a/sem1/test2/test2.2/list.cpp +++ b/sem1/test2/test2.2/list.cpp @@ -13,13 +13,6 @@ struct List ListElement *first; }; -void swap(ListElement *first, ListElement *second) -{ - int pilot = first->value; - first->value = second->value; - second->value = pilot; -} - void sort(ListElement *element) { if (element->next)