私が書いた次の関数を使ってプログラムにバイナリツリーを読み込もうとしています。コンソールのバイナリツリーをcで読み込む
void readTree(struct Dnode *root)
{
struct Dnode *temp;
struct Dnode *input;
char initData;
scanf(" %c",&initData);
input=CreateNode(initData);
if(initData==122){
printf("Leaf\n");
return;
}
else {
root=input;
temp=root;
printf("going to left of %c\n",initData);
readTree(root->lLink);
printf("going to right of %c\n",initData);
readTree(root->rLink);
}
}
メインではツリーが存在しないという点を除いて、すべてがうまくいきます。ここに私のメインプログラムがあります:
int main()
{
int n=0;
struct Dnode *root=NULL;
printf("Enter the tree as it asks. Enter z whenever there is no children :\n");
readTree(root);
printf("%c",root->data);
printf("In main");
return;
}
ツリーを入力した後に突然プログラムがクラッシュします。お手伝いください。
がでていることを忘れないでくださいCの引数はvalue *で渡されます。つまり、コピーされます。これらの引数は他のローカル変数と同じように機能し、関数が返ってきたら範囲外になります。引数は失われます。 c *で参考にしてエミュレートするパスを検索してください。デバッガでコードをステップ実行するだけで2,3分を費やしただけであれば、この問題は非常に明白でした。 –
あなたのプログラムはキーボード(または使用している標準の入力デバイス)から読み込みます。コンソール(またはあなたが使っている標準の出力デバイス)からではありません。 –
入力?期待される出力?実際の出力? 'struct Dnode'とは何ですか? 'CreateNode'とは何ですか? – 4386427