简体   繁体   中英

Struct pointer to another struct in C

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM