PDA

Visualizza la versione completa : [C] Problema con i Grafi e liste di Adiacenza


neidus
23-01-2013, 10:23
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)


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;

Queste sono le strutture che mi porto dietro per la creazione del Grafo, una struttura per i Vertici e una 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:



for (i=0;i<G->num_vertici;i++) {
G->list_Adj[i]->color=0;
G->list_Adj[i]->pi=0;
}


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!

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)!

Loading