ciao a tutti , ho un piccolo problema riguardante i grafi. a partire da questa procedura di creazione del grafo ne ho scriito una per aggiungere un nodo al grafo esistente. il programma va in crash sulla linea in cui rialloco con realloc la memoria per il grafo ingrandendola per il nodo aggiuntivo. Grazie a chi risponderà.
Graph graph_create(int n)
{
Graph g;
int i;
g = malloc(sizeof(struct graph) + sizeof(struct successors *) * (n-1));
assert(g);
g->n = n;
g->m = 0;
for(i = 0; i < n; i++) {
g->alist[i] = malloc(sizeof(struct successors));
assert(g->alist[i]);
g->alist[i]->d = 0;
g->alist[i]->len = 1;
g->alist[i]->is_sorted= 1;
}
return g;
}
void add_vertex(Graph g)
{
Graph tmp = realloc(g, sizeof(struct successors *));
if (tmp != NULL)
{
g = tmp; /* OK, nuovo assegnamento, più grande di p */
assert(g);
int numVert = graph_vertex_count(g)+1;
g->n = numVert;
g->alist[numVert-1] = malloc(sizeof(struct successors));
assert(g->alist[numVert-1]);
g->alist[numVert-1]->d = 0;
g->alist[numVert-1]->len = 1;
g->alist[numVert-1]->is_sorted= 1;
}
else
{
printf("errore");
}
}