我正在尝试创建一个二叉树程序,其中每个树节点都包含一个'inventory'结构。
我目前在插入函数中出现错误导致编译失败。 我得到的错误是:
left of '.invPartNo' must have class/struct/union
type is 'inventory *'
did you intend to use '->' instead?
这些是我的结构:
//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;
} ;
这是我的插入代码,在那里我使用了 - >,所以我不明白我得到的错误。任何帮助/解释将不胜感激。
struct 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) //error here
{
node->right = Insert(node->right, i);
}
else if(i.invPartNo < node->data->invPartNo) //error here
{
node->left = Insert(node->left, i);
}
return node;
}
答案 0 :(得分:2)
i
的类型为inventory *
,因此您应将i.invPartNo
替换为(*i).invPartNo
或等效i->invPartNo
以解决错误。
运营商.
适用于struct objects
和不 pointers to struct object
。运算符*
取消引用指针,取消引用的类型与struct object
相同,可在此处使用.
。但(*i).memb
是免费的,因此C language syntax
提供与i->mem
相同的快捷方式。