//---------------------------------------------------------------------------

#ifndef listH
#define listH

#include "element.h"

class NoElements{};

template  class list
{
        TElement *   first;  //Zeiger aufs erste Element
        TElement *   last;   //Zeiger aufs letzte Element
        int             len;    //Laenge
public:
        list();
        void    push_back (T d);//Richtet ein neues letztes Element ein
        T       pop_front ();   //Loescht das erste Element
        T &     operator [] (int p);
                //zugriff eines bestimmten Elementes
};

template
list::list():
        len(0)
{
        first = 0;
        last = 0;
}

template 
void    list::push_back (T d)
{
        if (first)
        {
                TElement * temp = new TElement (d,0);
                last -> SetNext (temp);
                last = temp;
        }
        else
        {
                first = new TElement (d,last);
                last = first;
        }
        len ++;
}

template
T       list::pop_front ()
{
        if (!first)
                throw NoElements();
        len --;
        if (first == last)
        {
                T d = first -> GetData();
                delete first;
                first = 0;
                last = 0;
                return d;
        }
        else
        {
                T d = first -> GetData();
                TElement * temp = first;
                first = first -> GetNext();
                delete temp;
                return d;
        }
}

template 
T & list::operator [] (int p)
{
        if (!first)
                throw OutOfRange();
        return first->GetData(p);
}

#endif
Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif