|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5745
|
[C/C++] Domanda rapida: come distruggere una lista?
Come da titolo, come si distrugge una lista?
Basta cancellare la testa, senza riassegnarla per fare sì che tutti gli altri nodi di quella siano considerati inconsistenti e quindi dare modo di scrivere nelle locazioni? O è meglio fare un lavoro più pulito con un ciclo di scansione e cancellazione nodo per nodo?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Penso nodo per nodo se stiamo parlando di una lista implementata da te.
|
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Sep 2008
Città: Milano
Messaggi: 126
|
Quote:
Se la lista come immagino è di tua implementazione devi cancellare un nodo alla volta. ciao! |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5745
|
Nella mia inesperienza ero convinto che bastasse cancellare un nodo solo, senza ricollegare gli altri, per rendere quelle aree utilizzabili per altri scopi!
Vi ringrazio!
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
se elimini solo un nodo, avresti il "garbage" degli altri e quindi spreco di memoria, quindi il metodo migliore e più efficiente è quello descritto sopra.
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12846
|
Se sei sotto Linux, ti consiglio, come faccio sempre in questi casi, l'ottimo tool valgrind, che ti consente di analizzare eventuali problemi di accesso e gestione della memoria.
Secondo me è un tool eccellente per scopi didattici e non (mozilla lo usa per Firefox), dovrebbero assolutamente farlo usare anche nei vari corsi... |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5745
|
Ho provato a scrivere del codice, ma purtroppo non funziona!
Codice:
int distruggi_lista() { LISTA *p, *t; p = head; int i=0; if (p== NULL) { cout << "LISTA VUOTA" << endl; return 0; } while(p!=NULL) { t = p; p = p->successivo; delete t; i++; } if(i>0) { cout << "CANCELLATA! " << i << endl; } return 0; }
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:07.