Я думаю, что нашел решение, которое искал.Я использовал Valgrind как можно лучше для проверки прав на чтение / запись, и ошибок не было.Да, были утечки памяти, но не в этом вопрос (я знаю об этом, не волнуйтесь).
Вот весь код для создания простого графика.Хотелось бы услышать о любых проблемах, которые могут возникнуть у этой реализации ...
#include "stdio.h"
#include "stdlib.h"
#define MaxV 10
#define MaxE 5
typedef struct edge {
int dest;
int cost;
struct edge *next;
} Edge, *Graph[MaxV];
Graph *initGraph() {
Graph *g = (Graph*)malloc(sizeof(Graph));
for(int i = 0; i < MaxV; i++)
(*g)[i] = NULL;
return g;
}
int insertEdge(Graph *g, int o, int d, int c) {
if(!g) return -1;
Edge *edge = (Edge*)malloc(sizeof(Edge));
edge->dest = d;
edge->cost = c;
edge->next = (*g)[o];
(*g)[o] = edge;
return 0;
}
int main(void) {
Graph *g1 = initGraph();
Edge *aux = NULL;
insertEdge(g1, 0, 1, 2);
insertEdge(g1, 0, 2, 3);
insertEdge(g1, 1, 4, 5);
insertEdge(g1, 2, 4, 1);
insertEdge(g1, 4, 8, 6);
for(int i = 0; i < MaxV; i++) {
printf("[%02d]\n", i);
for(aux = (*g1)[i]; aux != NULL; aux = aux->next)
printf(" [%d] » [%d] (%d)\n", i, aux->dest, aux->cost);
}
return 0;
}