diff --git a/list/linked_list.cc b/list/linked_list.cc new file mode 100644 index 0000000000000000000000000000000000000000..15834a5999ef209163a16b703f73f92259222e3b --- /dev/null +++ b/list/linked_list.cc @@ -0,0 +1,327 @@ +#include "linked_list.h" +/* + List::List(): + head{nullptr}, tail{nullptr} + {} + + List::~List() { + + if(List_Is_Empty() == false ){ + + Node* my_node = head; + + while (my_node != tail){ + my_node = my_node->next; + delete my_node->previous; + } + delete my_node; + head = nullptr; + tail = nullptr; + list_size = 0; + +} +} + + bool List::List_Is_Empty(){ + if (head == nullptr) + { + return true; + } + else + { + return false; + } + } + + + //List::Node::Node(int new_value): + // value{new_value} + //{} + + + + + + +//omskriven insert funktion SOM INTE ÄR TESTAD + + + void List::Insert_Head_Node(int value){ + + + + + } + + if(List_Is_Empty() == true ){ + + Node* my_node = new Node(value); + my_node->previous = nullptr; + my_node->next = nullptr; + head = my_node; + tail = my_node; + } + else + { + Node* my_node = new Node(value); + my_node->previous = tail; + my_node->next = nullptr; + tail->next = my_node; + tail = my_node; + + + } + } + +*/ + + + + + + + /** void List::Insert_Head_Node(int value){ + Node* my_node = new Node(value); + my_node->previous = nullptr; + my_node->next = nullptr; + head = my_node; + tail = my_node; + } + + //insert node at tail + +void List::Insert_Tail_Node(int value){ +Node* my_node = new Node(value); +my_node->previous = tail; +my_node->next = nullptr; +tail->next = my_node; +tail = my_node; +} + + +void List::printlist(Node* head){ +Node* traverser = head; +while(traverser != nullptr) { + cout<<traverser->value<<endl; + traverser = traverser->next; +} +} + + +int main() + +{ + +List newlist; + +newlist.Insert_Head_Node(5); +newlist.Insert_Tail_Node(3); +newlist.Insert_Tail_Node(1); + +newlist.printlist(newlist.head); + +return 0; +} + + + + + List::Node* Head; + List::Node* Tail; + + + List::Node* node = new List::Node(); + node->Value = 1; + node->previous = nullptr; + node->next = nullptr; + Head = node; + Tail = node; + +*/ + + + + + + +/*void printlist(List::Node*Head){ +List::Node* Traverser = Head; +while(Traverser != nullptr) { + cout<<Traverser->Value<<endl; + Traverser = Traverser->next; +} + + + +int main() +{ + Link* Head; + Link* Tail; + + +//Insert node at head + Link* link = new Link(); + link->Value = 1; + link->previous = nullptr; + link->next = nullptr; + Head = link; + Tail = link; +insert node at tail + link = new Link(); + link->Value = 1; + link->previous = Tail; + link->next = nullptr; + Tail->next = link; + Tail = link; +// node 3 (same as node 2) + link = new Link(); + link->Value = 1; + link->previous = Tail; + link->next = nullptr; + Tail->next = link; + Tail = link; + +printlist(Head); + +}*/ + + List::List(): + head{nullptr}, tail{nullptr} + {} + + + + List::~List() { + + if(List_Is_Empty() == false ){ + + Node* my_node = head; + + while (my_node != tail){ + my_node = my_node->next; + delete my_node->previous; + } + delete my_node; + head = nullptr; + tail = nullptr; + list_size = 0; + +} +} + + + bool List::List_Is_Empty(){ + if (head == nullptr) + { + return true; + } + else + { + return false; + } + } + + + List::Node::Node(int insert_value): + value{insert_value} + {} + + +//omskriven insert funktion SOM INTE ÄR TESTAD + + +void List::Insert_Node(int insert_value){ + + + if (List_Is_Empty()) + { + Node* my_node = new Node(insert_value); + head = my_node; + tail = my_node; + } else { + Node* tmp = head; + while (tmp->next != nullptr && insert_value > tmp->value){ + tmp = tmp->next; + + } + Node* my_node = new Node(insert_value); + if (insert_value < tmp->value) + { + + my_node->next = head; + my_node->previous = nullptr; + head = my_node; + } else if (insert_value > tail->value) + { + tail = my_node; + my_node->previous = tail; + tail->next = my_node; + + + } else { + my_node->next = tmp; + my_node->previous = tmp->previous; + tmp->previous->next = my_node; + tmp->previous = my_node; + + + + + } + } + + list_size++; + } + +int List::get_size() +{ + return list_size; + +} + + +//fixa argument +List::List(std::initializer_list<int> const &list) +{ +List(); +for (int n: list){ +Insert_Node(n); +} +} + + +//copy list konstruktor fixa argument +//List::Copy_List(List) +//List() + + + + + void List::printlist(Node* head){ +Node* traverser = head; +while(traverser != nullptr) { + cout<<traverser->value<<endl; + traverser = traverser->next; +} +} + + +int main() + +{ + +List newlist; + + +newlist.Insert_Node(1); +newlist.Insert_Node(2); +newlist.Insert_Node(3); + + + + + +newlist.printlist(newlist.head); + +return 0; +} \ No newline at end of file