I am trying to create multiple trees after calling tree_holder. The number of tree is unknown until compile time.
Since there are many trees, and i want to access them right away just like an array. I do not use linked list since it is too slow.
I have written the code to insert data in a tree. it can insert data into a tree without problems. The following is the code for create a tree.
//**********************************************
typedef struct trn {
struct trn *right;
struct trn *left;
int key;
} treenode;
treenode *create_tree(void)
{ treenode *node;
node = get_node();
node->left = NULL;
return(node );
}
//************************************************
In the main function, i write the following to create a tree.
treenode *onetree;
onetree = create_tree();
The above code runs perfectly(there are also get_node function, insert data,delete data function.They are too long,so i omit in the post) ,but i want to create multiple trees after calling a tree_holder variable,so i write a new struct and create_many_trees function :
//**************************************
typedef struct m_t{
treenode *tree;
}tree_holder;
//***********************************
tree_holder *create_many_trees(int length){
treenode *a;
tree_holder *b;
a=(treenode *) malloc(length*sizeof(treenode));
. .....some statements to catch a_t==Null
for(int i=0;i<length; i++){
a[i]=create_tree();}
b->tree=a;
return (b);
}
//************************************************
Now in the main function i want to create multiple trees(let say 5) instead on a single tree. I replace the old code in main with new code
//********************
Old code:
treenode *onetree;
onetree = create_tree();
//******************
New code:
tree_holder *th;
th=create_many_trees(5);
Now when it compiles, it gives a "incompatible types in assignment error" at this line "a[i]=create_tree();
" inside the tree_holder *create_many_trees(int length) function.
Question: Is there other ways to create multiple tree and store it using a struct variable? Why it said "incompatible types"?
create_tree() returns treenode, and "variable a" inside the create_many_trees is also treenode.