Witam, potrzebuje napisać funkcję która usuwa z listy parzyste elementy, no i prawię mi się udało ale mam w dwóch przypadkach problemy:
1: Gdy lista zawiera samą dwójkę to funkcja wyświetlająca liste nie powinna nic wyświetlić.
1: Gdy lista zawiera liczby np. 2 2 3 to funkcja wyświetlająca wyświetla: jakis adres? a potem 3 czyli jakbym czegoś po drodze nie zwolnił jakieś z tych dwóch liczb parzystych ale nie wiem .
Przyznam szczerze że od niedawna operuje na listach i może to tylko jakiś głupi błąd ? Z góry byłbym wdzięczny za pomoc :)
typedef struct el
{
int dane;
struct el *nast;
}element;
element *usun_parzyste(element *t)
{
element *q,*p,*r;
int dane;
q=t;
r=q;
if(q==NULL) return t;
while(q->nast!=0)
{
if(q->dane%2==0)
{
if(q->nast->nast!=0)
{
dane=q->nast->dane;
p=q->nast;
q->nast=q->nast->nast;
q->dane=dane;
free(p);
}
else
{
p=q;
q=q->nast;
r->nast=q;
free(p);
}
}
else
{
r=q;
q=q->nast;
}
}
if(q->dane%2==0)
{
p=q;
free(p);
r->nast=0;
}
return t;