2012-03-17 13 views
0

私はデータ構造が新しく、バイナリツリーの実装を使用して推測ゲームを行うように割り当てられました。私はファイルの実装なしでプログラムの流れを達成しました。私は私が持っている私のファイルにファイル からツリーを再構築中に問題を抱えている今、外部ファイルにpreorderlyバイナリツリーを保存していますバイナリツリーがファイルから再構築されない

が、それはエンジェル・ロクシンです:??#Neneng Bそれはサム・ピントますか? ##白い美しさですか?それは マリアン・リベラですか? ## HotandSexy?それはクリスティーヌ・レイエスですか? ###

"#"はNULLノード用です。

私のコードもあります。私は私の教授が私に与えたもののアルゴリズムに従っています。私はインターネットで検索し、私の教授が言ったのと同じアルゴリズムを私にくれました。私の問題は、プログラムがクラッシュするすべての3番目のヌル以外のデータです。私はクラッシュの主な理由は、3番目の非NULLデータが挿入された後にnullに設定されていないノードだと思います。もしそうなら、どうすれば私のプログラムがクラッシュしないようにNULLに設定できますか?ファイルのデータを文字列の配列に代入し、配列の最後のインデックスに "\ 0"を設定します。

void read(node *temp) 
{ 
    while(array[j]=="#") 
     j++; 

    if(array[j]=="\0") 
     return; 

    node *nNode; 
    nNode = new node; 
    nNode->yes=NULL; 
    nNode->no=NULL; 
    nNode->data=array[j]; 
    j++; 
    temp=nNode; 
    read(temp->yes); 
    read(temp->no); 
} 

答えて

0

問題は読み取り機能の定義にあります。私は、 "temp"は "node *"型の出力パラメータであると考えています。しかし、これはあなたが書いたことではありません。 ポインタや "node *"パラメータへの参照が必要です。そう:

void read(node** temp)

そして適切な(デ)によってコンパイル参照しているこのようなコードの残りの部分を調整します。これはあなたのクラッシュを解決するはずです。

関連する問題