codice:
  
 4. /** elemento lista di adiacenza */  
   5. typedef struct edge {  
   6.  /** etichetta nodo adiacente (indice nell'array) */  
   7.  unsigned int label;      
   8.  /** peso dell'arco (distanza in km) */  
   9.  double km;        
  10.  /** prossima adiacenza*/  
  11.  struct edge * next;      
  12. } edge_t;  
  13.  
  14. /** lunghezza massima label -- in caratteri */  
  15. #define LLABEL 128  
  16. /** lunghezza massima distanza in km -- in caratteri */  
  17. #define LKM 32  
  18.  
  19. /** nodo del grafo */  
  20. typedef struct node {  
  21. /** etichetta informativa (nome citta) */  
  22.    char* label;        
  23. /** lista di adiacenza */  
  24.    edge_t * adj;            
  25. } node_t;  
  26.  
  27. /** Grafo non-orientato rappresentato come array 0 .. (N-1) di vertici  
  28. */  
  29. typedef struct graph {  
  30.  /** array dei  nodi */  
  31.  node_t * node;    
  32.  /** numero nodi */  
  33.  unsigned int size;        
  34. } graph_t;  
  35.  
  36.  
  37.
ciao ragazzi una domanda per deallocare correttamente tutta la memoria di un puntatore a una variabile graph_t devo fare le seguenti deallocazioni?
-per ogni suo nodo:
deallocare lo spazio occupato dalla sua label
deallocare ogni elemento della lista di adiacenza di quel nodo
infine deallocare il puntatore di ogni nodo e la deallocazione del puntatore alla variabile graph_t,
sbaglio qualcosa o dimentico qualcosa? e' possibile evitare tutte queste deallocazioni ?
grazie in anticipo e scusate il disturbo