2012-01-06 56 views
1

這是節點定義:爲什麼在我自己的實現BST樹的不malloc的工作

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; 
    ... 
} 

但現在看來,的malloc當root = NULL或其他錯誤(在windows上寫入)時,會導致分段錯誤。爲什麼?

+3

錯誤在'...'中。另外,不要強制使用'malloc()'的結果。也可以使用調試器。 – 2012-01-06 06:55:46

+0

左邊,右邊可以理解..但是p是什麼? – 2012-01-06 06:57:20

+0

好吧,這段代碼是正確的,但我試圖用printf調試它,fflush並指出malloc,我正在dev-C++下編寫。但是,可以將我的大部分代碼放入.h文件(壞習慣)的原因是什麼? – user1133781 2012-01-06 07:00:10

回答

0

使用valgrind(如果您的系統是Linux)或調試器來調試您的問題。

學習使用調試器(例如,Linux上的gdb)。

1

我懷疑,在...內,你有一個分配給(或從x->leftx->rightx->right),以便於將新分配的節點鏈接到樹中。如果root爲NULL,則應該失敗。

相關問題