//---------------------------------------------------------------------------
#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