C++ 创建二进制搜索树时指针类型不兼容
这是我的密码。 我正在尝试在二叉搜索树中插入指向指针的地址 当我得到更大的数据节点时,我会向左移动,反之亦然 但是 获取错误: C:\Users\huf\Documents\tree.C | 26 |错误:在非结构或联合中请求成员“right”|C++ 创建二进制搜索树时指针类型不兼容,c++,c,data-structures,C++,C,Data Structures,这是我的密码。 我正在尝试在二叉搜索树中插入指向指针的地址 当我得到更大的数据节点时,我会向左移动,反之亦然 但是 获取错误: C:\Users\huf\Documents\tree.C | 26 |错误:在非结构或联合中请求成员“right”| #include <stdio.h> struct node { struct node*left; int data; struct node *right; }; void maketree(struct n
#include <stdio.h>
struct node
{
struct node*left;
int data;
struct node *right;
};
void maketree(struct node **root1, int data1)
{
if((*root1) == NULL)
{
(*root1) = (struct node *)malloc(sizeof(struct node));
(*root1)->data = data1;
(*root1)->left = NULL;
(*root1)->right = NULL;
//printf("%d %d",(*root1)->data,data1);
}
else if(data1 > ((*root1)->data))
{
printf("%d ", (*root1)->data);
maketree((*root1)->right,data1);
}
else if(data1 < (*root1)->data)
{
maketree((*root1)->left,data1);
printf("%d ", (*root1)->data);
}
}
int main()
{
struct node * root = NULL;
//int data;
//data = 5;
maketree(&root,12);
maketree(&root,5);
maketree(&root,9);
maketree(&root,8);
maketree(&root,16);
maketree(&root,10);
return 0;
}
为什么我的指针类型不兼容。问题出在maketree*root1->right,data1;行中;。必须有struct node**root1查看函数maketree的参数,但实际参数是struct node*
试着放这行:maketree&*root1->right,data1;较低的“左”几行也是如此。问题在于:
(*root1)->data = data1;
root1的类型是void**,因此*root1的类型只是void*,它不指向具有数据成员的结构
实际上,您需要更多地使用struct节点类型,您似乎下定决心尽可能多地使用void*
还有,.这里有什么问题?为什么这个问题还没有解决?