2012-03-05 23 views
-1

ツリーのノードを接続する際に問題があります。私のプログラムでは、関数read()が最初に実行され、次にload()関数が実行されます。 read()の機能では、外部ファイルのすべてのデータが配列に格納され、load()関数で再構築されます。変数datおよびiがグローバルに宣言されました。私の問題はload()機能にあります。あなたの助けは本当に高く評価されています。私の外部ファイルのデータは事前​​に整理され、NULLノードには "#"が使用されました。ファイルからツリーを再構築

void read() 
{ 
    string dat1; 
    fstream file; 
    file.open("data.txt", ios::in); 
    do 
    { 
     getline(file,dat1); 
     dat[i]=dat1; 
     i++; 
    }while(!file.eof()); 
    file.close(); 
} 

void load(node *root,int index) 
{ 

    node *nNode; 
    nNode=(node*)malloc(sizeof(node)); 
    nNode->yes=NULL; 
    nNode->no=NULL; 

    nNode->data=dat[index]; 

    if(index<i) 
    { 
     if(nNode->data!="#") 
     { 
      root=nNode; 
      load(root->yes,index+1); 
      load(root->no,index+1); 
     } 
     else 
     { 
      root=NULL; 
      return; 
     } 
    } 
} 
+0

を。 "私の問題は負荷機能にある"それは盗聴ですか?もしそうなら、方法。それはコンパイルですか?そうでない場合は、どのようなエラー。 – 111111

+0

コンパイルされますが、ノードは接続されません。私の問題を申し訳ありません。 – user1242812

答えて

1

まあ、一つの問題は、あなたが実際にload()indexを増加させたことがありませんということです。別の問題は、root-> yesまたはroot-> noに決して割り当てられないことです。代わりに、値渡しパラメータrootを割り当てます。多分あなたはこれも参考にしたいと思っていました。

あなたはおそらくもっと何かしたい:あなたは何を意味しています

// note that root and index are now pass-by-reference 
void load(node &*root,int &index) 
{ 
    ... 
     index++; 
     load(root->yes,index); 
     index++; 
     load(root->no,index); 
    ... 
} 
+0

ありがとうございました。私はそれについて作業します。 – user1242812

関連する問題