Ok, allora, il problema è cambiato. Mi è stato detto che questa funzione ha un costo decisamente alto, effettivamente ci sono while ovunque, ma era l'unico modo in cui ero riuscito a risolvere.
Mi è stato detto di eliminare gli elementi oltre la soglia usando un unico ciclo
Ora, l'unico problema è che ciò non fa puntare a NULL il campo lista->next dell'ultimo elemento valido (l'ultimo elemento prima di quelli che verranno eliminati), ma dopo il ciclo punta ad un'area di memoria a cui è stato fatto free.codice:while ( (*lista)->next != NULL ){ struct elemento *tmp; tmp=*lista; *lista=(*lista)->next; free(tmp); }
Come potrei fare?