diff --git a/sem1/test2/test2.2/list.cpp b/sem1/test2/test2.2/list.cpp new file mode 100644 index 0000000..53d0546 --- /dev/null +++ b/sem1/test2/test2.2/list.cpp @@ -0,0 +1,81 @@ +#include +#include "list.h" +using namespace std; + +struct ListElement +{ + int value; + ListElement *next; +}; + +struct List +{ + ListElement *first; +}; + +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); +}