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
?
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);
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.