2012-01-06 13 views
1

の私自身の実装ではmallocの仕事はこれがノード定義ではありません。はなぜ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; 
    ... 
} 

が、それはそのmalloc関数を表示されますroot = NULLの場合、または他のエラー(ウィンドウでの書き込み)のときにセグメント化エラーが発生しています。どうしてこんなことに?

+3

エラーは '...'にあります。また、 'malloc()'の結果をキャストしないでください。また、デバッガを使用してください。 –

+0

左、右理解可能ですが、pは何ですか? –

+0

OK、このコードは正しいですが、printf、fflushでデバッグしようとしましたが、mallocを指しています。私はdev-C++の下に書いています。しかし、私が大部分の.hファイル内にコードを置く理由があります(悪い習慣)? – user1133781

答えて

0

問題をデバッグするには、valgrind(ご使用のシステムがLinuxの場合)またはデバッガを使用してください。

デバッガ(Linuxではgdbなど)を使用する方法を学びます。

1

私は...あなたがツリーにあなたの新しく割り当てられたノードを結ぶ容易にするまで(またはから読み取る)割り当てx->leftまたはx->rightを、持っている内、と思われます。 rootがNULLの場合、これは失敗します。

関連する問題