2017-02-22 4 views
0

diese beiden structs Gegeben:Struct Zeiger auf eine andere Struktur in C

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

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

Wie ist es möglich, mehrere vertices zu einem hinzufügen?

Antwort

2

So:

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

Vergeben Sie einen Puffer groß genug, um die Ecken zu speichern, und speichern Sie den Zeiger darauf in der Variablen vertices in der Struktur .

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. 
+1

[Sie sollten nicht das Ergebnis von malloc] (http://stackoverflow.com/q/605845/3425536) werfen. – emlai

Verwandte Themen