Ошибка при разыменовании
struct treeNode {
struct treeNode* leftPtr;
int data;
struct treeNode* rightPtr;
};
typedef struct treeNode TreeNode;
typedef struct TreeNode* TreeNodePtr;
// insertNode получает: treePtr - NULL и value - 20
void insertNode(TreeNodePtr* treePtr, int value)
{
if (*treePtr == NULL)
{
*treePtr = malloc(sizeof(TreeNodePtr));
if (*treePtr != NULL)
{
(*treePtr)->data = value;
(*treePtr)->leftPtr = NULL;
(*treePtr)->rightPtr = NULL;
}
else
{
printf("%d not inserted. No memory available.\n", value);
}
}
}
Подчеркивает первые скобки ( "(" ) этих строк:
(*treePtr)->data = value;
(*treePtr)->leftPtr = NULL;
(*treePtr)->rightPtr = NULL;
Компилятор пишет: E0393 использование указателя на тип неполного класса не допускается
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Во первых описка в имени структуры :
struct treeNode {
struct treeNode* leftPtr;
int data;
struct treeNode* rightPtr;
};
typedef struct treeNode TreeNode;
typedef struct TreeNode* TreeNodePtr;
^^^
typedef struct treeNode* TreeNodePtr;
или
typedef TreeNode* TreeNodePtr;
Во вторых память выделяется под указатель (это мало). Надо под структуру.
*treePtr = malloc(sizeof(TreeNodePtr));
^^^
*treePtr = malloc(sizeof(TreeNode));