Witam. Jestem w trakcie tworzenia projektu zaliczeniowego i potrzebuję pomocy. Tworzę listę dwukierunkową i mam problem z usuwaniem elementów. Staram się wypatrzeć błąd, ale niestety go nie widzę. Funkcja po podaniu nazwiska powinna usuwać osobę o takim nazwisku. Działa usuwanie z listy osoby, której nazwisko się na tej liście znajduje. Jednak gdy wpiszę jakieś losowe nazwisko, którego nie ma na liście, zamiast pokazać się komunikat o braku takiej osoby, program się po prostu zawiesza. Kiedy usunęłam if z komunikatem program wciąż się zawieszał po wpisaniu nieprawidłowego nazwiska, dlatego wydaje mi się, że problem może tkwić jeszcze w pętli while. Proszę o pomoc.
void usun_osobe()
{
O *ind = first; //Ustawiamy nowy wskaźnik na pierwszym elemencie listy
char nazwisko[20];
system("cls");
cout<<"Nazwisko: "<<endl;
cin.getline(nazwisko, sizeof(nazwisko));
while(strcmp(ind->nazwisko, nazwisko) && ind!=NULL)
{
ind = ind->next;
}
if (ind == NULL)
{
cout<<"Nie odnaleziono takiej osoby"<< endl;
return;
}
else
{
O * ind2 = ind->next;
globalne_id--;
while(ind2!=NULL)
{
ind2->id--;
ind2 = ind2->next;
}
}
if (ind->prev == NULL)
{
first = ind->next;
O *next = ind->next;
next->prev = NULL;
}
else if (ind->next == NULL)
{
last = ind->prev;
O *previous = ind->prev;
previous->next = NULL;
}
else
{
O *previous = ind->prev;
previous->next = ind->next;
O *next = ind->next;
next->prev = ind->prev;
}
free(ind->data_urodzenia);
free(ind);
}