我在頭文件下列陣列typedef結構的指針
typedef struct tree_node* TreeNode;
struct tree_node{
int value;
void *data;
TreeNode parent;
TreeNode left;
TreeNode right;
};
要創建一個TreeNode我做以下
TreeNode createTreeNode(int value, void *data){
TreeNode node;
node = malloc(sizeof(TreeNode*));
if(node == NULL){
printf("TreeNode malloc failed!!\n");
exit(EXIT_FAILURE);
}
node->data = data;
node->value = value;
node->parent = NULL;
node->right = NULL;
node->left = NULL;
return node;
}
現在我想創建樹節點的數組...我怎麼會做它? 我想(取決於指針的大小或8)以下
TreeNode *treeNodes;
treeNodes = malloc(26 * sizeof(TreeNode));
然後
treeNodes[a_number_between_0_to_25] = createTreeNode(intNodeValue, NULL);
替換的sizeof(樹節點*)爲sizeof(樹節點)因爲指針的大小不是結構本身 – giorashc 2013-02-24 15:55:23
'typedef結構tree_node *樹節點的大小;'不是個好主意。它隱藏了'TreeNode'實際上是一個指針的事實。讓'TreeNode'成爲'struct tree_node'的別名,並使用'TreeNode *'代替。 – LihO 2013-02-24 15:55:29
你真的想要一個TreeNode(換句話說,指針)或一個tree_node結構數組的數組嗎? – thejh 2013-02-24 15:57:43