结构指向C中另一个结构的指针

时间:2017-02-22 19:54:19

标签: c data-structures struct

鉴于这两个结构:

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

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

如何将多个vertices添加到graph

2 个答案:

答案 0 :(得分:2)

像这样:

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);

答案 1 :(得分:0)

分配一个足够大的缓冲区来存储顶点,并将指针存储在结构vertices的变量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.