J'écris un programme d'arborescence binaire dans lequel chaque nœud contient une structure. Étant nouveau pour les pointeurs, je ne suis pas sûr de savoir comment corriger cette erreur que je reçois.L'expression de structure arborescente doit avoir un type de classe
Ce sont mes struct:
//inventory definition
typedef struct inventory
{
char invName[36];
int invPartNo;
int invQOH;
float invUnitCost;
float invPrice;
}item;
//tree definition
struct btree {
item *data;
struct btree *left;
struct btree *right;
} ;
Et dans ces deux fonctions, je reçois l'erreur 'expression doit avoir un type de classe':
struct btree *binary_search(struct btree *tree, int data)
{
if (tree==NULL) return NULL;
else if (data == tree->data.invPartNo) //tree in this line is highlighted red with the error
return tree;
else if (data < tree->data.invPartNo) //tree in this line is highlighted red with the error
return(binary_search(tree->left, data));
else
return(binary_search(tree->right, data));
}
btree *Insert(btree *node, inventory i)
{
if(node == NULL)
{
btree *temp;
temp = (btree *)malloc(sizeof(btree));
temp->data = i;
temp->left = temp->right = NULL;
return temp;
}
if(i.invPartNo > node->data.invPartNo) //node is highlighted with error
{
node->right = Insert(node->right, i);
}
else if(i.invPartNo < node->data.invPartNo) //node is highlighted with error
{
node->left = Insert(node->left, i);
}
return node;
}
Le membre 'data' est un pointeur. Il y a d'autres incohérences dans votre code (comme utiliser 'inventory' comme type), êtes-vous sûr de programmer C et non C++? En outre, il y a d'autres erreurs que je suis surpris de ne pas poser (par exemple, l'affectation d'une structure sans pointeur à un pointeur vers la structure). –
'data == (arbre-> données) -> invPartNo'..après tout' data' est pointeur dans le noeud – GoldRoger
S'il vous plaît, ne pas convertir la valeur de retour de 'malloc' –