bstにノードを挿入するための以下のプログラムがあります
#include <stdio.h>
#include <stdlib.h>
struct node {
int key;
struct node * left;
struct node * right;
};
struct node * insert(struct node *,int);
int main( int argc, const char *argv[]){
struct node *root= malloc(sizeof(struct node ));
int x;
if(root==NULL){
printf("mem error");
return;
}
root=NULL;
while(1){
fprintf(stdout, "Enter the value of data\n" );
fscanf(stdin,"%d",&x);
root=insert(root,x);
}
}
struct node * insert(struct node * root, int data ){
if(root==NULL){
struct node *root= malloc(sizeof(struct node ));
root->key = data;
printf("hiii\n");
root->left = NULL;
root->right = NULL;
return root;
}else{
if(root->key >= data){
root->left = insert(root->left,data);
}else if(root->key <= data){
root->right = insert(root->right,data);
}
return root;
}
}
それは正常に動作します..しかし、挿入関数のmalloc行にコメントすると..最初の値を取得した後にセグメンテーション違反が発生します。ここで何が起こっているのですか??