Questa è la funzione che mi da problemi:
//chiamata da quest'altra funzione:codice://mi estrae la testa,e mi restituisce l'attuale testa della lista struct nodo_lista_adiacenti *estrai_testa(struct nodo_lista_adiacenti *testa) { struct nodo_lista_adiacenti *corrente; corrente= testa; if(corrente != NULL) { testa= testa->next; free(corrente); } return testa; }
codice:struct nodo_lista_adiacenti *bfs(struct vertice *grafo, int i, int dim) { int confronto; //inizializzo la coda vuota struct nodo_lista_adiacenti *lista=NULL, *testa, *adiacenti=NULL, *da_restituire=NULL; //coloro tutti i vertici di bianco vertici_bianchi(grafo, dim); // i è l'indice del vertice da cui parte l'esplorazione strcpy(grafo[i].colore, "grigio"); grafo[i].distanza_precedente= 0; grafo[i].predecessore= 0; //inserisco in coda alla lista i che è un indice lista= inserisci_valore_in_coda(i, lista); while(lista != NULL) { testa= visualizza_testa(lista); lista=estrai_testa(lista); adiacenti= cerca_adiacenti(testa->info, grafo); while(adiacenti != NULL) { if( (confronto= (strcmp(grafo[adiacenti->info].colore, "bianco"))) == 0) { strcpy(grafo[adiacenti->info].colore, "grigio"); grafo[adiacenti->info].distanza_precedente= grafo[testa- >info].distanza_precedente +1; grafo[adiacenti->info].predecessore= testa->info; lista= inserisci_valore_in_coda(adiacenti->info, lista); da_restituire= inserisci_valore_in_coda(adiacenti->info, da_restituire); } adiacenti= adiacenti->next; } strcpy(grafo[testa->info].colore, "nero"); } return da_restituire; }

Rispondi quotando