Mam podwieszaną listę , chcę usunąć wybrany element z podwieszonej listy ale program wywala, ja w kodzie nie widzę błędu, kolega też nie
typedef struct stolik
{
bool rezerwacja;
int numer;
int krzesla;
struct stolik*pNext;
struct data*kiedy;
}stolik_typ;
typedef struct data
{
int rok;
int miesiac;
int dzien;
int godzina;
struct data*pNext;
struct klient*kto;
}data_typ;
typedef struct klient
{
char nazwisko[100];
long long int nrtel;
char uwagi[1000];
}klient_typ;
void usuwanieRezerwacji (stolik_typ**glowa)
{
char nazwisko[100];
int dzien, miesiac, rok, godzina;
printf("Usuwanie rezerwacji.\nPodaj nazwisko na ktore zostala zlozona rezerwacja: ");
scanf("%s", nazwisko);
wyborDaty(&rok, &miesiac, &dzien, &godzina);
stolik_typ*wsk = (*glowa);
data_typ*pierw;
while(wsk!=NULL)
{
pierw = wsk->kiedy;
if(pierw->pNext==NULL)
{
if(pierw->rok == rok && pierw->miesiac == miesiac && pierw->dzien == dzien && pierw->godzina == godzina && strcmp(pierw->kto->nazwisko, nazwisko) == 0)
{
free(pierw->kto);
free(pierw);
wsk->kiedy = NULL;
}
}
else
{
while(pierw->pNext!=NULL)
{
if(pierw->pNext->rok == rok && pierw->pNext->miesiac == miesiac && pierw->pNext->dzien == dzien && pierw->pNext->godzina == godzina && strcmp(pierw->pNext->kto->nazwisko, nazwisko) == 0)
{
data_typ*usuwany = pierw->pNext;
pierw->pNext = pierw->pNext->pNext;
free(usuwany->kto);
free(usuwany);
}
else
pierw = pierw->pNext;
}
}
wsk = wsk->pNext;
}
}