commit 585da305614d9a984f78d99f20e20c74f619884b Author: glazirEgorGeekovich Date: Sat May 24 17:56:16 2025 +0300 Загрузить файлы в «/» diff --git a/List.hpp b/List.hpp new file mode 100644 index 0000000..223bf55 --- /dev/null +++ b/List.hpp @@ -0,0 +1,142 @@ +#pragma once +#include "tools.hpp" +#include +#include + +namespace components{ + + struct un_Node{ + un_Node *p_next = nullptr; + tls::Value value; + }; + + struct dual_Node:un_Node { + tls::Value *p_prev = nullptr; + }; + +} + +namespace strs{ + struct unarList { + + protected: + tls::Size size; + + public: + components::un_Node operator() (tls::Size get_size); + components::un_Node& operator[] (tls::Index index); + + tls::Size get_size(); + + void create(); + void pop(); + void term(); + void remove(); + void append(tls::Value new_value); + + + + + + private: + components::un_Node *first_element; + components::un_Node *last_element; + + unarList() { + first_element = nullptr; + size = 0; + last_element = first_element; + } +// ~unarList(){ +// for (int i = 0; i< this->size; i++) pop(); +// } + + }; + +// struct dualList:unarList { +// +// dualList() { +// first_element = new components::dual_Node; +// +// +// } +// +// +// +// }; + +} + +void strs::unarList::create() { + strs::unarList(); +} + +tls::Size strs::unarList::get_size() { + return this->size; +} + + +components::un_Node strs::unarList::operator() (tls::Size get_size){ + size = get_size; + components::un_Node *iter_node = first_element; + for (tls::Index i = 0; i < size-1; i++){ + iter_node->p_next = new components::un_Node; + iter_node = iter_node->p_next; + iter_node->value = i+1; + } + last_element = iter_node; + return *first_element; + +} + +components::un_Node& strs::unarList::operator[] (tls::Index index){ + components::un_Node *tmp = this->first_element; + for (int j = 0; j < index; j++){ + tmp = tmp->p_next; + } + return *tmp; +} + +void strs::unarList::pop(){ + if (this->size == 0) return; + if (this->first_element->p_next != nullptr){ + components::un_Node *tmp = this->first_element->p_next; + delete first_element; + first_element = tmp; + } + else { + delete first_element; + first_element = nullptr; + } + --(this->size); +} + +void strs::unarList::remove(){ + components::un_Node *tmp = this->first_element; + while (tmp->p_next->p_next != nullptr) tmp = tmp->p_next; + tmp->p_next = nullptr; + delete last_element; + last_element = tmp; + --(this->size); +} + + +void strs::unarList::term() { + components::un_Node *iter_node = first_element; + for (tls::Index i = 0; i < size; i++){ + std::cout<< iter_node->value << '\t' << iter_node << "\t point on: " << iter_node->p_next << std::endl; + iter_node = iter_node->p_next; + } + std::cout << "-------------------------------------------------------------" << std::endl; +} + + +void strs::unarList::append(tls::Value new_value) { + this->last_element->p_next = new components::un_Node; + this->last_element = this->last_element->p_next; + this->last_element->value = new_value; + ++(this->size); +} + + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..0598c42 --- /dev/null +++ b/main.cpp @@ -0,0 +1,25 @@ +#include +#include +#include "List.hpp" +#include + +using namespace strs; + +int main() { +// dualList list; + + unarList list = unarList::create(); + + std::cout<