Ciao a tutti!
Abbiamo appena introdotto le liste in questo modo:
struct nodo{
int info;
struct nodo *next;
};
typedef struct nodo Nodo;
typedef Nodo * PNodo;
Mi sono imbattuto in qualche difficoltà scrivendo una funzione per cancellare dalla lista tutte le occorrenze di un certo dato.
Ho provato così:
PNodo Cancella(PNodo l, int val){
PNodo tmp, prev, curr;
tmp=(PNodo) malloc(sizeof(Nodo));
prev=(PNodo) malloc(sizeof(Nodo));
curr=(PNodo) malloc(sizeof(Nodo));
while(l->info==val){
tmp=l;
l=l->next;
free(tmp);}
prev=NULL;
curr=l;
while(curr!=NULL){
while(curr->info!= val && curr!=NULL){
prev=curr;
curr=curr->next;}
if(curr!=NULL){
tmp=curr;
prev->next=curr->next;
free(tmp);
curr=prev->next;
}
}
return l;
}
Sapreste aiutarmi?