Ciao! Devo creare una procedura che, data una lista di interi, elimini tutti i numeri dispari. Questo è quello che ho prodotto, ma quando compilo mi dice "Segmentation fault:11"
Grazie
codice:
void Dis(Lista *lista){    
  Lista pre;
    Lista aux;
    aux=malloc(sizeof(Elemento));
     aux=*lista;
    
    while(((aux)->i)%2==1){              //in questo ciclo elimino tutti i numeri dispari iniziali
      Lista tmp2;
        tmp2=aux;
        
        if((tmp2->next->i)%2==1){
	  aux=(aux)->next;
            free(tmp2);}
        else{
	  
	  (aux)=(aux)->next->next;
            pre=tmp2->next;
            free(tmp2);
        }
    }
    
    while(aux->next!=NULL){         //ora, dopo qualche numero pari elimino i restanti dispari
      if(((aux)->i)%2==1){
	  Lista tmp;
            tmp=(aux);
            pre->next=pre->next->next;
            (aux)=(aux)->next;
            free(tmp);
	    
        }
        else{
	  (aux)=(aux)->next;
            pre=pre->next;
        }
    }
}