
Zitat von
anda_skoa
Code:
// forward declaration
struct node;
// actual declaration
struct node {
node *subnodes;
// data
};
Danke dafür. Habe meins jetzt mal so wie oben modifiziert. Bei dir dürfte subnodes aber kein Array von Pointern sein, wie ich ihn brauche, sondern subnodes enthält nur ein Poiner auf eine node.
Code:
struct node;
#define nodeptr node* // nodeptr als pointer auf ein Element des Typs node
struct node {
int level; // level of node within tree
...
nodeptr* subnodes; // array of pointer to subnodes
...
};
#define level(x) (((nodeptr) (x))->level)
#define subnodes(x) (((nodeptr) (x))->subnodes)
Ich benutze noch gewisse Makros für einen besser lesbaren Zugriff (siehe die define's). Wenn ich jetzt einer Funktion einen Zeiger auf einen Knoten übergebe (um einfach zu bleiben, soll diese Funktion einfach mal das level des Knoten zurückgeben, welcher in dem member level gespeichert ist), müsste das doch einfach so gehen, oder?
Code:
int welches_level( nodeptr q ) {
return level(q);
}
Wenn ich während des Programmes nun die Dimension der subnodes kenne. Kann ich doch einfach die Größe wie folgt initialisieren, oder?
Code:
subnodes(q) = new nodeptr[dim]; //wobei q eben ein nodeptr, also ein zeiger auf eine node ist und dim die während des Programms erhaltene Dimension.
d.h. mein subnodes ist wie gewollt ein Aray der Größe dim mit Pointern auf structe des Typs node als Elemente.
Lesezeichen