#include "stdafx.h" #include #include #include #include using namespace std; class Prvek { public: string name; int r, g, b; Prvek* prev; Prvek* next; Prvek (string name0, int r0, int g0, int b0); ~ Prvek (); }; Prvek::Prvek (string name0, int r0, int g0, int b0) : name (name0) , r (r0), g (g0), b (b0), prev (nullptr), next (nullptr) { } Prvek::~Prvek () { } class List { public: Prvek* first; Prvek* last; List () : first (nullptr), last (nullptr) {} ~List () { } void InsertLast (Prvek* p); void InsertAfter (Prvek * ref, Prvek* p); void Check (); void Print (); }; void List::InsertLast (Prvek* p) { if (first == nullptr) { first = p; last = p; p->prev = nullptr; p->next = nullptr; } else { last->next = p; p->prev = last; last = p; p->next = nullptr; } } void List::InsertAfter (Prvek * ref, Prvek* p) { Prvek* a = ref->next; if (a==nullptr) last = p; else a->prev = p; p->next = a; p->prev = ref; ref->next = p; } void List::Print () { Prvek* p = first; while (p != nullptr) { cout << p->name << ", " << p->r << ", " << p->g << ", " << p->b; cout << endl; p = p->next; } } #include void List::Check () { if (first == nullptr) assert (last == nullptr); else { assert (last != nullptr); int cnt = 0; Prvek* p = first; while (p != nullptr) { cnt++; p = p->next; } p = last; while (p != nullptr) { cnt--; p = p->prev; } assert (cnt == 0); } } int main () { cout << "Zacatek" << endl; List a; a.Check (); a.InsertLast (new Prvek ("cervena", 255, 0, 0)); a.Check (); a.InsertLast (new Prvek ("modra", 0, 0, 255)); a.InsertAfter (a.first, new Prvek ("zluta", 255, 255, 0)); a.InsertAfter (a.last, new Prvek ("cerna", 0, 0, 0)); a.Check (); a.Print (); system ("pause"); return 0; }