Witam. Czy ktoś mógłby przejrzeć kod i powiedzieć co jest nie tak ?? Problem mam ze stawianiem elementów do listy.
#include <iostream>
using namespace std;
template <class TD>
class Lista;
template <class TD>
class WezelListy
{
friend class Lista<TD>;
public:
WezelListy(const TD &);
TD WezDane();
private:
TD dane;
WezelListy<TD> * nast;
};
template <class TD>
WezelListy<TD>::WezelListy(const TD & d)
{
dane=d;
nast=NULL;
}
template <class TD>
TD WezelListy<TD>::WezDane()
{
return dane;
}
template <class TD>
class Lista
{
public:
Lista();
~Lista();
void WstawNaPoczatek(TD);
void WstawNakoniec(TD);
bool UsunPierwszy(TD&);
bool UsunOstatni(TD&);
bool Pusta()const;
private:
WezelListy<TD> *WskaznikNaPierwszy;
WezelListy<TD> *WskaznikNaOstatni;
WezelListy<TD> *NowyWezel(TD);
};
template <class TD>
Lista<TD>::Lista()
{
WskaznikNaPierwszy = WskaznikNaOstatni =NULL ;
}
template <class TD>
Lista<TD>::~Lista()
{
TD d;
while(!Pusta())
UsunPierwszy(d);
}
template <class TD>
void Lista<TD>::WstawNaPoczatek(TD d)
{
WezelListy<TD> * nowywsk;
nowywsk = NowyWezel(d);
if (Pusta())
WskaznikNaPierwszy = WskaznikNaOstatni = nowywsk;
else
{
nowywsk->nast = WskaznikNaPierwszy;
WskaznikNaPierwszy= nowywsk;
}
}
template <class TD>
void Lista<TD>::WstawNakoniec(TD d)
{
WezelListy<TD> * Nowywsk=NowyWezel(d);
if (Pusta())
WskaznikNaPierwszy=WskaznikNaOstatni=Nowywsk;
else
{
WskaznikNaOstatni->nast=Nowywsk;
WskaznikNaOstatni=Nowywsk;
}
}
template <class TD>
bool Lista <TD>::UsunPierwszy(TD & d)
{
if (Pusta()) return false;
WezelListy<TD> * robwsk =WskaznikNaPierwszy;
d=robwsk->dane;
WskaznikNaPierwszy=WskaznikNaPierwszy->nast;
if (WskaznikNaPierwszy == NULL)
WskaznikNaOstatni =NULL;
delete robwsk;
return true;
}
template <class TD>
bool Lista<TD>::UsunOstatni(TD & d)
{
if (Pusta()) return false;
WezelListy<TD> * robwsk = WskaznikNaOstatni;
d=robwsk->dane;
if (WskaznikNaPierwszy == WskaznikNaOstatni)
WskaznikNaPierwszy=WskaznikNaOstatni=NULL;
else
{
WezelListy<TD> * rob2 = WskaznikNaPierwszy;
while(rob2->nast !=WskaznikNaOstatni)
rob2=rob2->nast;
rob2->nast=NULL;
WskaznikNaOstatni=rob2;
}
delete robwsk;
return true;
}
template <class TD>
bool Lista <TD>::Pusta()const
{
if ((WskaznikNaPierwszy == NULL) && (WskaznikNaOstatni == NULL))
return true;
return false;
}
int main()
{
Lista <int> lista;
lista.WstawNaPoczatek(5);
system("pause");
return 0;
}