napisalem sobie liste jednokierunkowa, problem mam z funkcja usuwajaca dany element, funkcja dziala, tylko nie wiem jak zwolnic pamiec po usunieciu elementu, wiecej informacji w komentarzach
node *delete_node(node *head, int val)
{
node *tmp=NULL;
node *p=NULL; //aby moc zwolnic pamiec wprowadzam dodatkowy wskaznik
if (head->value==val)
{
p=head->next; //dzieki p moge zwolnic head (ten if tylko gdy usuwam akurat pierwszy element
free(head);
}
else
{
tmp=search_node(head,val); //wyszukuje dany element (funkcja dziala ok)
if(tmp->next)
{
p->next=tmp->next->next;
free(tmp->next); //jak tu zwolnic, to co trzeba, aby obylo sie bez segmentation fault??
}
else
printf("brak takiego elementu\n");
}
return p;
}