Fragment kodu
class osoba{
public:
int id;
string imie;
string nazwisko;
osoba *poprzednia;
osoba *nastepna;
osoba();
};
osoba::osoba(){
poprzednia = nastepna = NULL;
}
class lista{
public:
osoba *pierwsza;
osoba *ostatnia;
lista();
void DodajNaPoczatek(int id, string imie, string nazwisko);
void DodajNaKoniec(int id, string imie, string nazwisko);
void DodajPoId(int id, string imie, string nazwisko);
void UsunKoniec();
void WyswietlListeOdPoczatku();
void WyswietlListeOdKonca();
};
lista::lista(){
pierwsza = ostatnia = NULL;
}
(...)
void lista::DodajPoId(int id, string imie, string nazwisko){
osoba *temp = pierwsza;
osoba *tmp = pierwsza;
while (temp){
if (temp->id == id){
//wczytywanie danych
tmp = new osoba;
tmp->id = id+2;
tmp->imie = imie;
tmp->nazwisko = nazwisko;
tmp->nastepna = temp->nastepna;
tmp->poprzednia = temp;
temp->nastepna->poprzednia = tmp;
temp->nastepna = tmp;
}
temp = temp->nastepna;
}
}
(...)
void main()
{
lista *baza = new lista;
baza->DodajNaPoczatek(1, "aaa", "AAA");
baza->DodajNaKoniec(2, "bbb", "BBB");
baza->DodajPoId(2, "ccc", "CCC");
baza->WyswietlListeOdPoczatku();
system("pause");
}
Gdy chcę dodać nowy element po id=2, to przy włączaniu progamu wyskakuje błąd.
Natomiast, gdy chcę nowy element umieścić po id=1 wszystko elegancko wychodzi.
Gdzie może być błąd?