Salve ragazzi, ho creato il seguente tipo di dati:
ed ho la seguente funzione InitG per inizializzare il grafo:codice:#define STEP_GRAFO 100 typedef struct grafo { NODO **archi; int PrimoLibero; int NumNodi; int N_Max; void **dizionario; NODO *FreeList; // eventuali f di callback } GRAFO;
Adesso devo fare in modo tale che, qualora ho:codice:GRAFO *InitG(GRAFO *G) { int i; G = (GRAFO*)malloc(sizeof(GRAFO)); G->NumNodi = 0; G->PrimoLibero = 0; G->N_Max = STEP_GRAFO; G->archi = (NODO**)malloc(sizeof(NODO) * G->N_Max); G->dizionario = (void**)malloc(sizeof(void*) * G->N_Max ); // inizializzazione necessaria for ( i = 0; i < G->N_Max; i++ ) G->dizionario[i] = NULL; // inizializzazione necessaria for ( i = 0; i < G->N_Max; i++ ) G->archi[i] = NULL; G->FreeList = NULL; return G; }
Qualcuno può aiutarmi?codice:if ( G->NumNodi == G->N_Max ) { // devo effettuare la realloc; // riallocando G->archi di + STEP_NODO(cioè 100); }
Inoltre nella init ho dovuto per forza inizializzare tutto a NULL altrimenti se facevo controlli del tipo:
G->dizionario[i] == NULL, mi si bloccava! (provando a stampare, stampava valori sporchi, e penso sia normale. Quindi è giusto inizializzare a null?? Lo domando poichè un mio amico mi ha detto che quando alloco con la malloc in automatico viene settato tutto a NULL, penso si sbagliava).

Rispondi quotando
