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行 } 返回根; }
我在编译时遇到以下错误: :在函数“插入”中: :63:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用] :53:7:注意:应为“struct node*”,但参数的类型为“struct node*” :63:14:警告:来自不兼容指针类型的分配[默认情况下已启用] :68:3:警告:从不兼容的指针类型传递'insert'的参数1[默认情况下已启用] :53:7:注意:应为“struct node*”,但参数的类型为“struct node*” :68:15:警告:来自不兼容指针类型的分配[默认启用]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:警告:来
将结构定义更改为
#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);