0

ノードの配列を印刷することは可能ですか? ビルド中の AVL ツリーを表示する必要がありますが、このコードを実行するたびにプログラムがクラッシュします。これを回避する別の方法はありますか?

     int k = 0;
    t = NULL;
    node* nodearray[32];
    for( j = 0; j < 33; j++)
    {
        printf ("Table %d \n", j+1);
        printf ("LineNum Left Data Right\n");
        t = Insert(j, a[j], t );

    for (k= 0 ; k < j ; k ++)
    {
         printf ("%5d %5d %5d %5d", nodearray[k]->num, nodearray[k]->left->data, nodearray[k]->data, nodearray[k]-> right ->data);
    }
}
4

1 に答える 1

2

問題:

  1. nodearrayは初期化されていません - その中のポインターは不定値を持っています。それらを逆参照すると、未定義の動作が呼び出されます。

  2. for( j = 0; j < 33; j++)-しかし、あなたはnodearray32要素の長さであると宣言しました。の実装を見ずに判断するのは難しいInsert()ですが、おそらく off-by-one エラーも発生しています (配列の末尾を超えて読み取り/書き込みを行っています)。

于 2013-05-10T19:58:33.583 に答える