#include "list.h" #include List::List() : first (nullptr), last (nullptr) { } List::~List() { purge (); } void List::insertFirst (Data * data) { data->prev = nullptr; data->next = first; first = data; if (last == nullptr) last = data; else data->next->prev = data; } void List::insertLast(Data * data) { data->prev = last; data->next = nullptr; last = data; if (first == nullptr) first = data; else data->prev->next = data; } void List::insertAfter(Data * old, Data * data) { data->prev = old; data->next = old->next; if (data->prev == nullptr) first = data; else data->prev->next = data; if (data->next == nullptr) last = data; else data->next->prev = data; } void List::insertBefore(Data * old, Data * data) { data->next = old; data->prev = old->prev; if (data->prev == nullptr) first = data; else data->prev->next = data; if (data->next == nullptr) last = data; else data->next->prev = data; } void List::remove(Data * data) { if (data->prev != nullptr) data->prev->next = data->next; else first = data->next; if (data->next != nullptr) data->next->prev = data->prev; else last = data->prev; data->prev = nullptr; data->next = nullptr; } void List::purge() { while (last != nullptr) { Data * t = last; remove (t); delete t; t = nullptr; } } void List::printItem (Data * t) { if (t == nullptr) cout << "nic" << endl; else cout << t->name << ", " << t->r << ", " << t->g << ", " << t->b << endl; } void List::print() { // #include cout << "Seznam" << endl; Data * t = first; while (t != nullptr) { cout << t->name << ", " << t->r << ", " << t->g << ", " << t->b << endl; t = t->next; } cout << "Konec seznamu" << endl << endl; } Data::Data() : prev(nullptr), name(""), r(0), g(0), b(0), next(nullptr) { } Data::Data(string n0, int r0, int g0, int b0) : prev(nullptr), name(n0), r(r0), g(g0), b(b0), next(nullptr) { }