Pointers 很难弄清楚指向结构的指针在二叉树中是如何工作的 #包括 #包括 typedef struct//创建指针结构 { int数据; 结构节点*左; 结构节点*右; }节点; 节点*插入(节点*根,int x); //插入函数 node*insert(node*root,int x)//第53行 { 如果(!root) { 根=新的_节点(x); 返回根; } 如果(根->数据>x) { root->left=插入(root->left,x);//第63行 } 其他的 { root->right=插入(root->right,x);//第68行 } 返回根; }

Pointers 很难弄清楚指向结构的指针在二叉树中是如何工作的 #包括 #包括 typedef struct//创建指针结构 { int数据; 结构节点*左; 结构节点*右; }节点; 节点*插入(节点*根,int x); //插入函数 node*insert(node*root,int x)//第53行 { 如果(!root) { 根=新的_节点(x); 返回根; } 如果(根->数据>x) { root->left=插入(root->left,x);//第63行 } 其他的 { root->right=插入(root->right,x);//第68行 } 返回根; },pointers,struct,binary-search-tree,Pointers,Struct,Binary Search Tree,我在编译时遇到以下错误: :在函数“插入”中: :63:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用] :53:7:注意:应为“struct node*”,但参数的类型为“struct node*” :63:14:警告:来自不兼容指针类型的分配[默认情况下已启用] :68:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用] :53:7:注意:应为“struct node*”,但参数的类型为“struct node*” :68:15:警告:来

我在编译时遇到以下错误:

:在函数“插入”中:

:63:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用]

:53:7:注意:应为“struct node*”,但参数的类型为“struct node*”

:63:14:警告:来自不兼容指针类型的分配[默认情况下已启用]

:68:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用]

:53:7:注意:应为“struct node*”,但参数的类型为“struct node*”

:68:15:警告:来自不兼容指针类型的分配[默认启用]

  • 为什么insert函数中的第一个参数与我传递给它的内容不兼容
  • 如何将指针分配给“结构指针”

  • 将结构定义更改为

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct              //create a pointer structure
    {
    int data;
    struct node *left;
    struct node *right;
    } node;
    
    node *insert(node *root, int x);
    
    //Insert Function
    node *insert(node *root, int x)    //Line 53        
    {    
        if(!root)
        {
            root = new_node(x);
            return root;
        }
    
        if (root->data > x)
        {
            root->left = insert(root->left, x);   //Line 63
        }
    
        else 
        {
            root->right = insert(root->right, x);  // Line 68
        }
    
        return root;
    }
    
    并将其功能原型化

    struct node             //create a pointer structure
    {
        int data;
        struct node *left;
        struct node *right;
    };
    

    这两种声明风格的区别是什么?一个很长的话题帮助了很多人!我不认为“速记”的定义适合我。指针和BST的概念仍然有点模糊。你能推荐一些对你有帮助的文章吗?
    struct node *insert(struct node *root, int x);