Salve a tutti. Sto scrivendo un programma di riepilogo sulle liste (in vista dell'esame ). Ho problemi però per la funzione di eliminazione di un nodo. Io passo alla funzione il nome che voglio eliminare. Scorro la lista e man mano con la strcmp verifico se il nome passato è uguale al nome contenuto nella struct TNode. Nel caso strcmp==1, dealloco il nodo.
Non mi da errori, però non cancella niente. Non capisco
Chiamata nel main:
codice:
case 2:
if(lista==NULL){
printf("La lista e' vuota.\n");
}else{
printf("Inserisci il dato del nodo da eliminare: ");
scanf("%s", nome);
lista=Ricerca_Nodo_Da_Eliminare(lista, nome);
printf("Lista aggiornata:\n");
Stampa_Lista(lista);
}
break;
Funzione RICERCA_NODO_DA_ELIMINARE:
codice:
TList Ricerca_Nodo_Da_Eliminare(TList lista, char nome[]){
TNode *curr=lista;
while(curr!=NULL){
if(strcmp(nome, curr->info.nome)==1){
Elimina_Nodo(curr);
}
curr=curr->next;
}
return lista;
}
Funzione di DEALLOCAZIONE:
codice:
void Elimina_Nodo(TNode *nodo){
free(nodo);
}