diff --git a/List.hpp b/List.hpp index 223bf55..5567e3d 100644 --- a/List.hpp +++ b/List.hpp @@ -1,55 +1,52 @@ -#pragma once -#include "tools.hpp" +#ifndef LIST_HPP +#define LIST_HPP + #include +#include "tools.hpp" #include namespace components{ - struct un_Node{ - un_Node *p_next = nullptr; + struct unNode{ + unNode *p_next;; tls::Value value; + + unNode(); }; - struct dual_Node:un_Node { - tls::Value *p_prev = nullptr; + struct dualNode:unNode { + tls::Value *p_prev;; }; } -namespace strs{ - struct unarList { - protected: - tls::Size size; - - public: - components::un_Node operator() (tls::Size get_size); - components::un_Node& operator[] (tls::Index index); + + +namespace strs{ + struct Skeleton { tls::Size get_size(); - void create(); void pop(); void term(); void remove(); void append(tls::Value new_value); - - + protected: + tls::Size size; + }; + + struct unarList:Skeleton { - private: - components::un_Node *first_element; - components::un_Node *last_element; + components::unNode operator() (tls::Size get_size); + components::unNode& operator[] (tls::Index index); - unarList() { - first_element = nullptr; - size = 0; - last_element = first_element; - } -// ~unarList(){ -// for (int i = 0; i< this->size; i++) pop(); -// } + unarList(); + + components::unNode *first_element; + components::unNode *last_element; }; @@ -67,76 +64,6 @@ namespace strs{ } -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); -} - +#endif diff --git a/main.cpp b/main.cpp index 0598c42..0639a93 100644 --- a/main.cpp +++ b/main.cpp @@ -8,7 +8,8 @@ using namespace strs; int main() { // dualList list; - unarList list = unarList::create(); + strs::unarList list; +// list(5); std::cout<