0

Given these two structs:

typedef struct graph {
    int number_vertices;
    vertex *vertices;
} graph;

typedef struct vertex {
    int id;
    linked_list *out_neighbours;
    linked_list *in_neighbours;
} vertex;

How is it possible to add multiple vertices to a graph?

Daniel
  • 71
  • 7

2 Answers2

2

Like this:

graph g;
g.number_vertices = n;
g.vertices = malloc(n * sizeof(vertex)); // allocate dynamic memory for `n` vertices
                                         // and make g.vertices point to that memory
// fill g.vertices[0], g.vertices[1], …, g.vertices[n-1]

// …

// deallocate the memory when you're done:
free(g.vertices);
Emil Laine
  • 41,598
  • 9
  • 101
  • 157
0

Allocate a buffer large enough to store the vertices, and store the pointer to it in the variable vertices in the struct graph.

struct graph g;
g.number_vertices = 10;  // If you want to store 10 vertices
g.vertices = (vertex*)malloc(g.number_vertices * sizeof(struct vertex));
g.vertices[0]... // To access the first.
g.vertices[1]... // To access the second.
g.vertices[2]... // To access the third, etc.
Tommy Andersen
  • 7,165
  • 1
  • 31
  • 50