Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.54 KB | None | 0 0
  1. TList list_destroy(TList list){
  2.    
  3.     //la funzione deve deallocare e
  4.     //dstruggere interamente gli elemnti della lista
  5.    
  6.     //implementiamo la funzione in maniera ricorsiva
  7.    
  8.     //caso degenere
  9.     if(list == NULL)
  10.         return list;
  11.    
  12.     //caso Base: la lista è composta da un solo elemento e questo punta a NULL
  13.     if(list->link == NULL){
  14.         node_destroy(*list);
  15.         return NULL;
  16.     }
  17.     else{
  18.         //DIVIDE: se la lista è composta da più elementi
  19.         //richiamiamo la funzione stessa inviandogli quello successivo
  20.         TList list2;
  21.        
  22.         //IMPERA
  23.         list->link=list_destroy(list->link);
  24.         node_destroy(*list);
  25.        
  26.         //COMBINA
  27.         return NULL;
  28.        
  29.     }    
  30.    
  31.    
  32.     /*
  33.      il ragionamento di questa funzione consiste nel raggiungere
  34.      * l'elemento finale della lista, quello che punta a NULL
  35.      * distruggerlo con la node_destroy(), e restituire il valore NULL
  36.      *
  37.      * nel caso base, questo è funzionante, dato che corrisponde ad una lista di un solo elemento
  38.      *
  39.      * nel caso in cui ci fossero più elementi, sarebbe possibile
  40.      * richiamare la stessa funzione, inviando però una LISTA TAGLIATA IN TESTA
  41.      * cioè inviando il link alla posizione successiva
  42.      *
  43.      * eliminando allora il valore *list, con la node_destroy(),
  44.      * cioè il puntatore alla lista tagliata corrente, possiamo restituire NULL, come link
  45.      * del nodo precedente
  46.      *
  47.      * ??funzionerà??
  48.      
  49.      */
  50.    
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement