View Full Version : [C] funzione cancella lista
blindwrite
27-06-2006, 13:54
sto cercando di implementare una funzione a cui passo una lista con testa elemento dummy e una stringa che indica i blocchetti della lista che devo cancellare
ho scritto questo, ma cancella solo il primo elemento della lista che trova con quel nome e lascia tutti gli altri elementi della lista con quel nome invariati
ecco:
void cancella2(proprieta *testa2,char nome[21])
{
proprieta*p;
p=testa2;
proprieta*prec,*corr,*tmp;
prec=p;
corr=p->next;
while(corr!=NULL && strcmp(corr->nome,nome)!=0 ){
prec=corr;
corr=corr->next;
}
if(corr!=NULL){
tmp=corr;
prec->next=corr->next;
free(tmp);
}
}
grazie a chi volesse aiutarmi
Salvo errori che posso aver commesso per il gran caldo :sbav: ;) , dovrebbe andare bene questo codice:
void cancella2 (proprieta **testa2,char nome[21])
{
proprieta *prop = *testa2;
proprieta *prev = NULL;
proprieta *next;
while (prop != NULL)
{
next = prop->next;
if (strcmp (prop->nome, nome) == 0)
{
if (prop == *testa2)
*testa2 = next;
else if (prec != NULL)
prec->next = next;
free (prop);
}
else
prec = prop;
prop = next;
}
}
Nota, e questo è importante, che alla funzione devi passare non il puntatore alla testa ma l'indirizzo del puntatore alla testa. Questo perché se cancelli il primo elemento (o i primi N elementi) della lista, il puntatore alla testa va aggiornato, altrimenti resterebbe inconsistente!!
blindwrite
27-06-2006, 14:37
grazie infinite
nel codice hai diachiarato prev e poi hai usato prec... ho corretto e funziona perfettamente!!
grazie grazie grazie
trallallero
27-06-2006, 14:48
'azz ... anticipato :)
lo stavo provando con la ricorsione
beati voi che state scoprendo liste e puntatori ... qui sempre la solita storia :rolleyes:
ma andbin ... lavori senza aria condizionata ???
o stai a casa ?
nel codice hai diachiarato prev e poi hai usato prec... è il caldo ... :p :p
ma andbin ... lavori senza aria condizionata ???Qui in ufficio non abbiamo il condizionatore ... al massimo mi porterò io un ventilatore. :(
trallallero
27-06-2006, 15:15
Qui in ufficio non abbiamo il condizionatore ... al massimo mi porterò io un ventilatore. :(
beh, qui l'hanno aggiustata da poco ma nonstante il fresco confesso che all'indirizzo al puntatore non ci avevo pensato :muro:
:)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.