我对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 调用中?