Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建二进制搜索树时指针类型不兼容_C++_C_Data Structures - Fatal编程技术网

C++ 创建二进制搜索树时指针类型不兼容

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

这是我的密码。 我正在尝试在二叉搜索树中插入指向指针的地址 当我得到更大的数据节点时,我会向左移动,反之亦然 但是

获取错误: C:\Users\huf\Documents\tree.C | 26 |错误:在非结构或联合中请求成员“right”|

#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*


还有,.

这里有什么问题?为什么这个问题还没有解决?