Wita, implementuję listę dwu kierunkową, mam problem z dodawaniem nowych elementów, gdy je inicjuję ich wartość jest inna niż ją określę, moglibyście spojrzeć w mój kod i napisać mi gdzie jest błąd? Oto kod:
template <typename typ>
class lista
{
signed int identyfikator;
class element
{
public:
element *następny;
element *poprzedni;
typ wartość;
int identyfikator;
};
element *pierwszy;
element *ostatni;
element *aktualny;
element *obiekt;
public:
lista()
{
identyfikator=1;
obiekt=new element;
pierwszy=obiekt;
ostatni=obiekt;
aktualny=obiekt;
aktualny->wartość=0;
aktualny->identyfikator=identyfikator;
}
lista(typ wartość)
{
identyfikator=1;
obiekt=new element;
pierwszy=obiekt;
ostatni=obiekt;
aktualny=obiekt;
aktualny->wartość=wartość;
aktualny->identyfikator=identyfikator;
}
lista(int ilość, typ wartość)
{
identyfikator=1;
obiekt=new element;
pierwszy=obiekt;
ostatni=obiekt;
obiekt->identyfikator=identyfikator;
aktualny=obiekt;
obiekt->wartość=wartość;
int obrót=1;
while(obrót<ilość)
{
identyfikator++;
obiekt=new element;
obiekt->identyfikator=identyfikator;
obiekt->wartość=wartość;
obiekt->poprzedni=aktualny;
aktualny->następny=obiekt;
aktualny=obiekt;
ostatni=obiekt;
obrót++;
}
}
lista(int ilość, typ *wartość)
{
identyfikator=1;
obiekt=new element;
pierwszy=obiekt;
ostatni=obiekt;
obiekt->identyfikator=identyfikator;
aktualny=obiekt;
obiekt->wartość=wartość[0];
int obrót=1;
while(obrót<ilość)
{
identyfikator++;
obiekt=new element;
obiekt->identyfikator=identyfikator;
obiekt->wartość=wartość[obrót];
obiekt->poprzedni=aktualny;
aktualny->następny=obiekt;
aktualny=obiekt;
ostatni=obiekt;
obrót++;
}
}
~lista()
{
delete[] obiekt;
}
void wyświetlanie_listy()
{
aktualny=pierwszy;
if(pierwszy==ostatni)
{
cout<<aktualny->wartość<<endl;
}
else
{
while(aktualny!=ostatni)
{
cout<<aktualny->wartość<<endl;
aktualny=aktualny->następny;
}
}
}
typ wyświetlanie_elementu(int identyfikator)
{
aktualny=pierwszy;
if(pierwszy==ostatni)
{
if(aktualny->identyfikator==identyfikator)
{
return aktualny->wartość;
}
else
{
return 0;
}
}
else
{
while(aktualny!=ostatni)
{
if(identyfikator==aktualny->identyfikator)
{
return aktualny->wartość;
break;
}
aktualny=aktualny->następny;
}
}
}
int wyświetlanie_indeksu(typ wartość)
{
aktualny=pierwszy;
if(pierwszy==ostatni)
{
if(aktualny->wartość==wartość)
{
return aktualny->identyfikator;
}
else
{
return 0;
}
}
else
{
while(aktualny!=ostatni)
{
if(wartość==aktualny->wartość)
{
return aktualny->identyfikator;
break;
}
aktualny=aktualny->następny;
}
return 0;
}
}
void edytuj_element(int identyfikator, typ wartość)
{
aktualny=pierwszy;
if(pierwszy==ostatni)
{
if(aktualny->identyfikator==identyfikator)
{
aktualny->wartość=wartość;
}
}
else
{
while(aktualny!=ostatni)
{
if(identyfikator==aktualny->identyfikator)
{
aktualny->wartość=wartość;
break;
}
aktualny=aktualny->następny;
}
}
}
void dodaj_element(typ wartość)
{
obiekt=new element;
aktualny=obiekt;
ostatni->następny=obiekt;
obiekt->poprzedni=ostatni;
obiekt->identyfikator=ostatni->identyfikator+1;
ostatni=obiekt;
aktualny->wartość=wartość;
aktualny=pierwszy;
}
void dodaj_element()
{
obiekt=new element;
ostatni->następny=obiekt;
obiekt->poprzedni=ostatni;
obiekt->identyfikator=ostatni->identyfikator+1;
ostatni=obiekt;
}
void sortowanie()
{
}
void resortowanie()
{
}
};