diff --git a/sem1/test3/test3.1/list.cpp b/sem1/test3/test3.1/list.cpp new file mode 100644 index 0000000..cad92f8 --- /dev/null +++ b/sem1/test3/test3.1/list.cpp @@ -0,0 +1,71 @@ +#include +#include "list.h" +using namespace std; + +struct ListElement +{ + int number; + int amount; + ListElement *next; +}; + +struct List +{ + ListElement *first; +}; + +List *createList() +{ + return new List {nullptr}; +} + +void putOnPlace(ListElement *&element, int number) +{ + if (element->next && element->number > element->next->number) + { + ListElement *current = element->next; + element->next = element->next->next; + current->next = element; + element = current; + putOnPlace(element->next, number); + } +} + +void addElement(List *list, int number) +{ + ListElement *current = list->first; + while (current) + { + if (current->number == number) + { + current->amount++; + return; + } + current = current->next; + } + ListElement *newElement = new ListElement {number, 1, list->first}; + list->first = newElement; + putOnPlace(list->first, number); +} + +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->number << "=>" << current->amount << " "; + current = current->next; + } +} + diff --git a/sem1/test3/test3.1/list.h b/sem1/test3/test3.1/list.h new file mode 100644 index 0000000..27e9549 --- /dev/null +++ b/sem1/test3/test3.1/list.h @@ -0,0 +1,10 @@ +#pragma once + +struct ListElement; +struct List; + +List *createList(); +void deleteList(List *list); + +void addElement(List *list, int number); +void displayList(List *list); diff --git a/sem1/test3/test3.1/main.cpp b/sem1/test3/test3.1/main.cpp new file mode 100644 index 0000000..abce0c4 --- /dev/null +++ b/sem1/test3/test3.1/main.cpp @@ -0,0 +1,20 @@ +#include +#include "list.h" +using namespace std; + +int main() +{ + List *list = createList(); + cout << "Enter numbers:" << endl; + int number = 0; + cin >> number; + for (int i = 0; number != 0; i++) + { + addElement(list, number); + cin >> number; + } + cout << endl; + displayList(list); + deleteList(list); +} +