删除 main 中的 int 后 BST 代码停止工作
BST code stops working after deleting the int in main
所以,我试图编写一个只有插入的二叉树代码,它工作正常,但在我删除一些无用的 int
后,它由于某种原因停止工作。谁能告诉我为什么
所以,这是我的代码,它工作正常。但是,当我删除 int main
中的 int i=3;
时,它会停止工作。这是为什么?顺便说一句,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()
家族的铸造结果是 considered as a bad practice。
所以,我试图编写一个只有插入的二叉树代码,它工作正常,但在我删除一些无用的 int
后,它由于某种原因停止工作。谁能告诉我为什么
所以,这是我的代码,它工作正常。但是,当我删除 int main
中的 int i=3;
时,它会停止工作。这是为什么?顺便说一句,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()
家族的铸造结果是 considered as a bad practice。