Ich bin ziemlich neu in C, also wenn meine Schritte falsch sind, lassen Sie es mich bitte wissen. Angenommen, ich habe etwas Ähnliches wie:
struct graphNode{
int val;
graphNode* parent;
int succSize;
int succMaxSize;
graphNode* succ[1];
};
Ich werde einen neuen Knoten erstellen mit:
graphNode *n;
n = malloc(sizeof(struct graphNode));
assert(n);
n->val = 1;
n->parent = NULL;
n->succSize = 0;
n->succMaxSize = 1;
Dann, wenn ich einen Nachfolger zum Knoten hinzufügen möchte
if (n->succSize == n->succMaxSize){
n->succ = realloc(n->succ, sizeof(graphNode*) * n->succMaxSize * 2);
n->succMaxSize *= 2;
}
n->succ[succSize] = n2; //n2 ist vom Typ graphNode*
succSize++;
Ist das korrekt? Muss ich auch für das struct realloc verwenden oder reicht realloc des Arrays aus? Müsste ich für das anfängliche Array malloc verwenden? Sollte die anfängliche Arraygröße bei meinem malloc-Aufruf für n enthalten sein?