Dodawanie wartości do grafu

0

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.

0
  1. Poczytaj jak się używa realloc
  2. initGraph(List *l - po kiego ci ten parametr przecież go nie potrzebujesz.
  3. insertGraph(List * Graph, int row po kiego przesyłasz cała tabele jak możesz przesłać wskaźnik na konkretny element, będzie prostsza funkcja.
  4. To co wyżej podano ma mało wspólnego z listą sąsiedztwa.
0

To co wyżej podano ma mało wspólnego z listą sąsiedztwa.

Może mnie zatem ktoś naprowadzić jak ma wyglądać taka lista w języku ANSI C ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.