Witam,
Mam nastepujacy problem. mam sobie liste jednokierunkowa na ktorej sa przechowywane elementy, kazdy element listy zawiera:
char nazwa_produktu[30];
char jednostka[30];
float liczba_jednostek;
Zrobilem sobie opcje w programie ze user usuwa sobie dowolny element z listy, wszystko smiga jak nalezy az do momentu gdy user usunie wszystkie elementy i zostanie jeden element lub po prostu jak jest tylko jeden element na liscie. W tej sytuacji program sie wyklada tzw. user se wybiera ze chce usunac element nr 1, ale w programie nie jest on usuwany. Chodzi o to ze jak usuna pierwszy i zarazem ostatni i jedyny element na liscie??
Kombinowalem takie cos ale nie smiga dobrze ;/
if(help->next == NULL)
{
if(PoczatekListy != NULL)
{
free(help);
}
else
{
printf("Lista produktow jest pusta.\n");
}
}
przy czym help to:
struct lista *help = PoczatekListy;
Rozumiem to w taki sposob co napisalem:
- Jezeli nie istnieje nastepny element listy (tzw. jezeli istnieje tylko jeden element listy lub zaden nie istnieje) to wjezdzamy do ifa.
- Jezeli istnieje jeden element listy to wjezdzamy do drugiego ifa i zwalniamy miejsce pierwszego elementu listy.
- Jezeli nie istnieje zaden element listy to wywalamy komunikacik