|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
[C] funzione cancella lista
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: Codice:
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); } }
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Salvo errori che posso aver commesso per il gran caldo
![]() ![]() 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; } }
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
grazie infinite
nel codice hai diachiarato prev e poi hai usato prec... ho corretto e funziona perfettamente!! grazie grazie grazie
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
'azz ... anticipato
![]() lo stavo provando con la ricorsione beati voi che state scoprendo liste e puntatori ... qui sempre la solita storia ![]() ma andbin ... lavori senza aria condizionata ??? o stai a casa ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
![]() ![]()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:10.