diff --git a/list/linked_list.cc b/list/linked_list.cc deleted file mode 100644 index 16ab6d1c042fe33f662275d46b7761cf536d4fc1..0000000000000000000000000000000000000000 --- a/list/linked_list.cc +++ /dev/null @@ -1,225 +0,0 @@ -#include "linked_list.h" - - //List::Node::Node(int new_value): - //value{new_value} - //{} - -//omskriven insert funktion SOM INTE ÄR TESTAD - - List::List(): - head{nullptr}, tail{nullptr} - {} - - List::List(List const& rhs) : - List() - { - for (int i{ 0 }; i < rhs.get_size(); i++) { - Insert_Node(rhs.at(i)); - } - } - - List::List(List&& rhs) : - List() - { - *this = std::move(rhs); - } - - List::~List() { - while (head != nullptr) { - Node* temp = head; - head = head->next; - delete temp; - } - tail = nullptr; - list_size = 0; - } - - bool List::List_Is_Empty(){ - if (head == nullptr) - { - return true; - } - else - { - return false; - } - } - - int List::get_size()const - { - return list_size; - } - - int List::at(int const& position)const - { - if (position < get_size()) - { - Node* tmp = head; - for (int i = 0; i < position; i++) - { - tmp = tmp->next; - } - return tmp->value; - } - else { - throw std::logic_error("Större än listan"); - - } - } - - 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->previous = my_node; // Update previous node's pointer - head = my_node; - } - else if (insert_value > tail->value) { - my_node->previous = tail; - tail->next = my_node; - tail = my_node; - } - else { - my_node->next = tmp; - my_node->previous = tmp->previous; - tmp->previous->next = my_node; - tmp->previous = my_node; - } - } - list_size++; - } - - -void List::remove(int const& pos) { - Node* tmp = head; - - for (int i = pos; i > 0; i--) { - tmp = tmp->next; - } - - if (tmp->previous == nullptr && tmp->next == nullptr) { - delete tmp; - head = nullptr; - tail = nullptr; - - } - else if (tmp->next == nullptr) { - tail = tmp->previous; - tail->next = nullptr; - delete tmp; - } - else if (tmp->previous == nullptr) { - head = tmp->next; - head->previous = nullptr; - delete tmp; - } - else { - tmp->previous->next = tmp->next; - delete tmp; - } - 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); - } -} - -List& List::operator =(List const& rhs) -{ - int tmp = get_size(); - for (int k{ tmp }; k > 0; k--) - { - remove(0); - } - - for (int i{ 0 }; i < rhs.get_size(); i++) { - Insert_Node(rhs.at(i)); - } - - list_size = rhs.get_size(); - - return *this; -} - -List& List::operator =(List&& rhs) //FLyttilldelning -{ - - Node* tmp_head = head; - Node* tmp_tail = tail; - - int tmp_size = get_size(); - list_size = rhs.get_size(); - rhs.list_size = tmp_size; - - head = rhs.head; - tail = rhs.tail; - - rhs.head = tmp_head; - rhs.tail = tmp_tail; - - return *this; -} - -ostream& operator << (ostream& os, List const& rhs) -{ - for (int i{ 0 }; i < rhs.get_size(); i++) - { - os << rhs.at(i); - if (i + 1 != rhs.get_size()) { - os << " "; - } - } - return os; -} - -//copy list konstruktor fixa argument -//List::Copy_List(List) -//List() - -void List::printlist(){ - Node* traverser = head; - while(traverser != nullptr) { - cout << traverser->value << endl; - traverser = traverser->next; - } -} -/* -int main() -{ - List newlist{3, 5, 7, 11, 13}; - - newlist.remove(4); - newlist.printlist(); - -return 0; -} -*/ \ No newline at end of file