我插入二进制搜索树节点。但它没有正常工作。这是我的代码:
int adding(node * tree,double x,int y)
{
node *newN;
if(!tree)
{
newN=(node*)malloc(sizeof(node));
newN->data=x;
newN->totalval=y;
newN->right=NULL;
newN->left=NULL;
tree=newN;
return 1;
}
if(x < tree->data)
{
adding(tree->left,x,y);
}
if(x==tree->data)
{
printf("This data is already existed. Please try again");
return 0;
}
if(x> tree->data)
{
adding(tree->right,x,y);
}
}
P.S:struct node有左,右数据。在这个插入数据和x不一样。 x是从用户获取的,数据是从文件夹中获取并插入不同的函数。
答案 0 :(得分:1)
让我们说NULL
是 (void*)0
。
我们有时会忘记指针是一个数字。唯一的补充是这个数字是内存中某个字节的偏移量,这就是全部。
因此考虑到null(在C中)是if(!tree)
{
newN=(node*)malloc(sizeof(node));
newN->data=x;
newN->totalval=y;
newN->right=NULL;
newN->left=NULL;
tree=newN;
return 1;
}
,这段代码:
if(!tree)
{
//...
(void*)0 = newN;
return 1;
}
可以这样写:
0
您是否意识到您尝试为function [output] = mysum(a,b,inputfun)
output = sum(inputfun(a:b))
分配值?我们需要做什么才能为指针赋值,而不是指向它指向的变量?换句话说,函数应该如何传递指针才能改变它? (提示:作为指针的指针)