This commit is contained in:
glazirgeek 2025-05-25 13:29:15 +03:00
parent 419320e6ec
commit 3cf187a4ff
2 changed files with 28 additions and 100 deletions

121
List.hpp
View file

@ -1,55 +1,52 @@
#pragma once #ifndef LIST_HPP
#include "tools.hpp" #define LIST_HPP
#include <iostream> #include <iostream>
#include "tools.hpp"
#include <strstream> #include <strstream>
namespace components{ namespace components{
struct un_Node{ struct unNode{
un_Node *p_next = nullptr; unNode *p_next;;
tls::Value value; tls::Value value;
unNode();
}; };
struct dual_Node:un_Node { struct dualNode:unNode {
tls::Value *p_prev = nullptr; tls::Value *p_prev;;
}; };
} }
namespace strs{ namespace strs{
struct unarList { struct Skeleton {
protected:
tls::Size size;
public:
components::un_Node operator() (tls::Size get_size);
components::un_Node& operator[] (tls::Index index);
tls::Size get_size(); tls::Size get_size();
void create();
void pop(); void pop();
void term(); void term();
void remove(); void remove();
void append(tls::Value new_value); void append(tls::Value new_value);
protected:
tls::Size size;
};
struct unarList:Skeleton {
components::unNode operator() (tls::Size get_size);
components::unNode& operator[] (tls::Index index);
private: unarList();
components::un_Node *first_element;
components::un_Node *last_element;
unarList() { components::unNode *first_element;
first_element = nullptr; components::unNode *last_element;
size = 0;
last_element = first_element;
}
// ~unarList(){
// for (int i = 0; i< this->size; i++) pop();
// }
}; };
@ -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

View file

@ -8,7 +8,8 @@ using namespace strs;
int main() { int main() {
// dualList list; // dualList list;
unarList list = unarList::create(); strs::unarList list;
// list(5);
std::cout<<list.get_size(); std::cout<<list.get_size();
// list(2); // list(2);