我的插入代码在c中无法正常工作

时间:2014-11-22 23:47:58

标签: c insert tree

我插入二进制搜索树节点。但它没有正常工作。这是我的代码:

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是从用户获取的,数据是从文件夹中获取并插入不同的函数。

1 个答案:

答案 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)) 分配值?我们需要做什么才能为指针赋值,而不是指向它指向的变量?换句话说,函数应该如何传递指针才能改变它? (提示:作为指针的指针)