Witam
Próbuję napisać graf skierowany oparty na listach sąsiedztwa.
typedef struct adjacency_list {
int size;
int check;
int max_size;
int *memory;
}List;
2 funkcje : inicjalizacja oraz dodawanie nowego elementu do grafu
List *initGraph(List *l, int n) {
l = malloc(n);
l->max_size = n;
l->size = 0;
return l;
}
void insertGraph(List * Graph, int row, int value) {
if (Graph[row].check != 1) {
Graph[row].memory = malloc(sizeof(int));
Graph[row].memory[0] = value;
Graph[row].check = 1;
Graph[row].size = 1;
}
else {
int newSize = (Graph[row].size * sizeof(int)) * 2;
realloc(Graph[row].memory, newSize);
Graph[row].memory[Graph[row].size] = value;
++Graph[row].size;
}
}
Problem pojawia się przy dodawaniu elementów do struktury. Otóż po wywołaniu funkcji insertGraph za trzecim razem dla tego samego pierwszego argumentu po kompilacji wyskakuje błąd. Przyczyną błędu jest linijka w funkcji insertGraph odpowwiedzialna za "realloc" pamięci.