Я не могу понять, как правильно это выполнить, дает ошибку сегментации. Ниже приведен фрагмент кода. Можешь ли вы смотреть на голове тоже, я не уверен, если это правильный путь инициализации головы до нуля в другом файл, он выполняется следующим образом:Ошибка сегментации при вставке в двоичное дерево
Table tb ;
tb= initialise_table (table_size);
tb = insert(text_words,tb);
//these 3 typedef declarations are in a "some.h" file
typedef struct node * tree_ptr;
typedef char* Key_Type;
typedef struct table* Table;
struct node {
Key_Type element;
tree_ptr left;
tree_ptr right;
};
struct table {
tree_ptr head;
};
Table init_table() {
Table head = NULL;
}
Table insert(Key_Type key ,Table temp) {
tree_ptr t = (tree_ptr)malloc(sizeof(tree_ptr));
t->element = key;
// t->left = t->right = NULL;
if (temp->head==NULL) {
temp = (Table)malloc (sizeof (Table));
temp->head = t;
printf("empty tree ");
}
else {
temp = insert(t->element,temp);
printf("inserted into ");
}
return temp;
printf("wowo!");
}
Для начала [не выдавайте результат 'malloc' в C] (http://stackoverflow.com/questions/605845/do-i-cast-the- результат-оф-таНос).Затем запустите свою программу в отладчике, чтобы увидеть * где * произошел сбой. Если это не в вашем коде, перейдите в стек вызовов функций до тех пор, пока вы не достигнете своего кода. –
Но я предполагаю, что это потому, что вызов 'malloc' выделяет размер * указателя *, а не всю структуру. Не используйте псевдонимы типов для указателей, поэтому легко ввести такие ошибки. –
Привет, я просто удалил это кастинг, но не повезло –