簡體   English   中英

刪除 main 中的 int 后,BST 代碼停止工作

[英]BST code stops working after deleting the int in main

所以,我試圖編寫一個只插入的二叉樹代碼,它正在工作,但是在我刪除一些無用的int之后,它由於某種原因停止工作。 誰能告訴我為什么

所以,這是我的代碼,它工作正常。 但是當我刪除int i=3; int main它停止工作。 這是為什么? 順便說一句int i=3; 只是一個隨機數,如果我將其更改為其他數字,它仍然有效

#include<stdio.h> 
#include<stdlib.h> 

struct Treenode{ 
    int data; 
    struct node*left; 
    struct node*right; 
}; 
typedef struct Treenode Treenode;


struct Treenode* CreateTree(struct Treenode** tree, int num) { 
 
    Treenode*temp = NULL;
    if(!(*tree))
    {
        temp = (Treenode*)malloc(sizeof(Treenode));
        temp->left = temp->right = NULL;
        temp->data = num;
        *tree = temp;
        return;
    }

    if(num < (*tree)->data){
        CreateTree(&(*tree)->left, num);
    }
    else if(num > (*tree)->data){
        CreateTree(&(*tree)->right, num);
    }
    
}

void inorder(struct Treenode* root)
{
    if (root != NULL) {
        inorder(root->left);
        printf("%d \n", root->data);
        inorder(root->right);
    }
}

int main(){
    int i = 3;
    //creating tree
    Treenode*root;
    
    
    CreateTree(&root, 1);
    CreateTree(&root, 2);
    CreateTree(&root, 3);
    CreateTree(&root, 4);
    CreateTree(&root, 5);
    CreateTree(&root, 6);

    inorder(root);
    

    return 0;
}

非靜態局部變量Treenode *root; 沒有初始化,所以它的初始值是不確定的。 使用這種不確定的值可能會引起一些麻煩。

初始化像Treenode *root = NULL; 解決問題。

另請注意, malloc()系列的強制轉換結果被認為是一種不好的做法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM