gpt4 book ai didi

c 二叉树插入函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:42 24 4
gpt4 key购买 nike

我正在尝试制作一个二叉树程序,其中每个树节点都包含一个“库存”结构。

我目前在我的插入函数中遇到导致编译失败的错误。我得到的错误是:

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;
}

最佳答案

i 的类型是inventory *所以你应该替换 i.invPartNo(*i).invPartNo或等效 i->invPartNo解决您的错误。

运算符(operator) .适用于 struct objects并且不是 pointers to struct object .接线员*取消引用指针和取消引用的类型相同 struct object启用 . 的使用这里。但是(*i).memb很吵,所以C language syntax提供与 i->mem 相同的快捷方式.

关于c 二叉树插入函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23733111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com