Salve,
ho un problema relativo all'utilizzo dei Grafi nel linguaggio C.
Il programma che devo sviluppare mi serve per effettuare l'ordinamento topologico e quindi i passi sono:
1-Creazione Grafo con liste di Adiacenza
2-Implementazione della DFS e DFS_Visit
3-Ordinamento Topologico(Intrinseco nella DFS quando il nodo diventa Black)
Queste sono le strutture che mi porto dietro per la creazione del Grafo, una struttura per i Vertici e una Graph.codice:typedef struct Node{ int nodeID; int color; // Colore del nodo nella visita di profonditā (DFS) 0=Bianco 1=Grigio 2=Nero int pi; //Tengo traccia del padre del Nodo int dTime; //Tempo di scoperta del Nodo int fTime; //Tempo trascorso per la scoperta di tutte le adiacenze struct Node *next; //Puntatore al prossimo nodo } Vertice; //Struttura del Grafo, tiene traccia dei Vertici totali e della Lista delle Adiacenze typedef struct Graph{ int num_vertici; //Tengo traccia del numero totale di vertici del Grafo Vertice **list_Adj; // Vettore con liste di Adiacenza } Graph;
Il mio problema sovviene quando una volta inizializzato e riempito il grafo con determinati Archi, devo accedere tramite il Grafo agli elementi dei nodi per modificarli:
Passando il mio Grafo sempre per riferimento in modo tale da avere una modifica globale, nella funzione per la visita in profonditā devo inizializzare tutti i nodi del mio grafo e proseguo in questo modo:
Quando mando in esecuzione il programma questo ciclo o meglio quel passaggio da un puntatore ad un altro per arrivare all'elemento color e pi, manda in crash il programma!codice:for (i=0;i<G->num_vertici;i++) { G->list_Adj[i]->color=0; G->list_Adj[i]->pi=0; }
Non riesco a capire perchč vā in crash quando cerco di accedere per mezzo di un puntatore di tipo Vertice agli elementi della prima struct(Vertice)!

Rispondi quotando