我正在做二叉树的c程序,同时在2到3个节点后将节点插入到树中,子节点有垃圾值和崩溃,我在xcode中做的任何想法…
Bnode createTreeNode()
{
    Bnode node=(Bnode)malloc(sizeof(Bnode));
    return node;    
}
Bnode addTreeNode(Bnode inNode, char *inData)
{
    int compareValue;
    if (inNode == NULL)     
    {
        inNode = createTreeNode();
        inNode->leftNode=NULL;            
        inNode->rightNode=NULL;
        stpcpy(inNode->data,inData);        
    }
    else if((compareValue=strcmp(inData,inNode->data))==0)       
    {        
        inNode->count=inNode->count+1;
    }
    else if(compareValue>1)        
    {        
        inNode->rightNode=addTreeNode(inNode->rightNode,inData);    
    }
    else        
    {            
        inNode->leftNode = addTreeNode(inNode->leftNode,inData);        
    }
    return inNode;    
}这就是我如何创建节点并将其插入到树中。
发布于 2010-04-20 11:14:22
Bnode node=(Bnode)malloc(sizeof(Bnode)); //[1]
    return node;   malloc的
参数是要分配的动态内存的大小。
您提供了指向结构的指针的大小作为参数,而不是结构本身的大小。
因此,分配给Bnode的内存较少,最终必然会得到无用的值和分段错误。
将其更改为类似于
Bnode node = malloc(sizeof(struct _bnode));
//where Bnode is pointer to struct _bnode附注:1在C中不需要显式强制转换(Bnode)。
发布于 2010-04-20 01:59:39
您为节点声明了一个指针,但实际上并没有为它分配任何存储空间,所以您有一个dangling pointer。您需要为每个新节点调用malloc() (或calloc()),以便分配存储。
https://stackoverflow.com/questions/2669549
复制相似问题