#include "stdafx.h"
 
#include <stdlib.h>
#include <iostream>
#include <string>
#include <cassert>
 
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 <cassert>
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;
}
 
seznam2018_st_b.txt · Last modified: 2018/02/21 17:10 by 147.32.8.110
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki