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

标签 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:结构节点有数据,左,右。并且在这个插入数据和x不一样。 x 是从用户获取的,数据是从文件夹获取并插入到不同的函数中。

最佳答案

假设NULL。 我们有时会忘记指针是一个数字。唯一额外的是这个数字是内存中某个字节的偏移量,仅此而已。

因此考虑到 null(在 C 中)是 (void*)0,此代码:

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

关于c - 我的插入代码在 c 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27083902/

相关文章:

c - 为什么运行程序会出错?

mysql - UPDATE 是否明显比 INSERT 更有效?

sql - 如何在 SQL Server 2005 中捕获截断错误?

Java - 具有多个节点的树数据结构 - 如何有效地搜索

python - 获取每个节点的最大树深度

c - 我的 C 程序在新行上打印 -39,但我不明白为什么

c - 如何在 Linux 上使用标准 I/O 函数在多个进程中写入一个文件?

与文字混淆,C中的算术

MySQL 在未指定的列上报告未知列

javascript - TreeView 中的 Angular 复选框