Salve a tutti, mi servirebbe una mano con una struttura legata da puntatori (anche se per come ce le hanno spiegate all'Università le chiamo liste).
La struttura è la seguente
codice:
struct elemento{ int value;
struct elemento *next;
};
Dopo aver definito tutte le value ecc. ecc. devo confrontare ogni singola value con un valore e cancellare tutte quelle che, dopo un incremento di 1, superano tale valore facendone il free della memoria e restituire il numero di elementi cancellati nel processo.
Nel prototipo della funzione avevo pensato una cosa del genere
codice:
int increase_delete ( struct elemento **lista, int N, int soglia );
(dove N è il numero di elementi contenuti nella lista)
Per poi farla in questo modo
codice:
int increase_delete( struct elemento **lista, int N, int soglia){
int count;
while ( *lista != NULL && ++(*lista)->value <= soglia){
*lista = (*lista)->next;
count++;
}
//MANCA LA PARTE IN CUI LIBERO LA MEMORIA
return (N-count);
}
Ritornando N-count come numero di elementi cancellati. Come posso fare a liberare tutti gli elementi oltre tale soglia?