私はcにかなり慣れていないので、私の手順が間違っている場合はお知らせください。次のようなものがあるとしましょう。
struct graphNode{
int val;
graphNode* parent;
int succSize;
int succMaxSize;
graphNode* succ[1];
};
以下を使用して新しいノードを作成します。
graphNode *n;
n = malloc(sizeof(struct graphNode));
assert(n);
n->val = 1;
n->parent = NULL;
n->succSize = 0;
n->succMaxSize = 1;
次に、ノードに後継者を追加したい場合
if (n->succSize == n->succMaxSize){
n->succ = realloc(n->succ, sizeof(graphNode*) * n->succMaxSize * 2);
n->succMaxSize *= 2;
}
n->succ[succSize] = n2; //n2 is of type graphNode*
succSize++;
これは正しいです?構造体にも再割り当てする必要がありますか、それとも配列の再割り当てで十分ですか? 初期配列に対して malloc する必要がありますか? n の malloc 呼び出しに初期配列サイズを含める必要がありますか?