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:
Funzione RICERCA_NODO_DA_ELIMINARE: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 di DEALLOCAZIONE: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; }
codice:void Elimina_Nodo(TNode *nodo){ free(nodo); }


). 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.
Rispondi quotando