Ciao, premetto che la tua richiesta di aiuto non è affatto chiara...
MarcoRayRaimondi ha scritto:
while(Curr!=NULL && Valore>Curr->Info)
Si tratta di una lista ordinata presumo, altrimenti non avrebbe senso quel secondo controllo.
In ogni caso cosa succede se il ciclo termina perché Curr è uguale a NULL?
Ti faccio notare che modificando un po' la funzione potresti fare a meno delle variabili Prec e Curr. Inoltre se all'interno della lista ci sono più elementi uguali a Valore e vuoi eliminarli tutti, come fai a sapere quante volte richiamare la funzione?
In base alle suddette due osservazioni imposterei la funzione nel seguente modo:
int Cancella(Elemento **p, int Valore)
{
...
}
In questo modo lanciando
Elemento *lista;
...
stampa_lista(lista);
while(Cancella(&lista, 5));
stampa_lista(lista);
otterresti un output del genere:
5 7 5 2 0 6 7 5 3
7 2 0 6 7 3