2012-01-06 1 views
1

Это определение узла:Почему не таНос работа в моей реализации BST дерева

typedef struct drzewo BST; 
struct drzewo { 
    int key; 
    BST *left; 
    BST *right; 
    BST *p; 
}; 

, и я пытаюсь написать добавить функцию:

BST *add( BST *root, int val) 
{ 
    BST *x = root; 
    BST *nowe =(BST*)malloc(sizeof(BST)); 


    nowe->key = val; 
    nowe->left=nowe->right=nowe->p=NULL; 
    ... 
} 

, но оказывается, что таНос приводит к ошибке сегментации, когда root = NULL или другая ошибка (запись в окнах). Почему это так?

+3

Ошибка в '...'. Кроме того, не выдавайте результат 'malloc()'. Также используйте отладчик. –

+0

левый, правый понятно .. но что такое p для? –

+0

ОК, этот код верен, но я попытался отладить его с помощью printf, fflush и указал malloc, я пишу под dev-C++. Но может быть причина, по которой я ставил большинство кода внутри файлов .h (плохая практика)? – user1133781

ответ

0

Используйте valgrind (если ваша система является Linux) или отладчиком для отладки ваших проблем.

Научитесь использовать отладчик (например, gdb в Linux).

1

Я подозреваю, что в пределах ... у вас есть задание (или чтение) x->left или x->right, чтобы упростить привязку вашего недавно выделенного узла к дереву. Если root равен NULL, это должно завершиться неудачно.

Смежные вопросы