У меня есть ниже программа для вставки узла в 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;
}
}
она работает нормально .. но если я закомментируйте таНос строку в функции вставки ..it дает мне ошибку сегментации после принятия первого значения. Что здесь происходит??
Почему вас удивляет, что отключение 'malloc' в' insert' дает ошибку сегментации? Чего вы ожидали? – zwol
Узнайте немного о форматировании кода при отправке вопроса здесь. Я исправил это для вас. Вы можете посмотреть, что я сделал, нажав кнопку «Изменить». В основном я удалил все пустые строки, которые никто не хочет видеть, и отложил все 4 пробела, щелкнув маленький значок '{}'. Вы получите лучшие ответы с лучшим вопросом. –