Я пытаюсь построить многоходовое дерево в C. Я застрял в выделении памяти для детей. У меня есть вектор, который содержит отцов каждого узла. Вот мой код:
#define MAX_CHILDS 10
int t[10] = {1, 2, 4, 1, -1, 3, 2, 1, 0, 4};
NODE *root;
NODE *v[MAX_CHILDS];
//add children for specified node
void ADD_REF(int i) {
v[i]->children[v[i]->child_count] = v[t[i]];
v[i]->child_count++;
}
//creates the tree
NODE *T1(int n, int *t) {
int root = 0;
for (int i = 0; i < n; i++) {
v[i] = (NODE *) malloc(sizeof(NODE));
v[i]->info = i;
v[i]->child_count = 0;
v[i]->children = (NODE **) malloc(sizeof(NODE)); // I think the problem is here
}
for (int i = 0; i<n; i++) {
if (t[i] == -1)
root = i;
else
ADD_REF(i);
}
return v[root];
}
void main() {
root = T1(MAX_CHILDS, t);
print_tree(root, 0); // prints the tree
}
Вот структура УЗЛА:
typedef struct NODE {
int info;
int child_count;
struct NODE **children;
} NODE;
Я точно не уверен, что проблема в выделении памяти. По моей логике должно работать.
info
иchild_count
— это целые числа, аchildren
— это просто указатель. - person Rahul Shardha   schedule 14.05.2014Enter a number to make a "number" way tree
. Затем назначьте это число как размер массива - person Rahul Shardha   schedule 14.05.2014