2013-05-10 96 views
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); 
    } 
} 
+0

它崩潰,因爲可能你有一些非法的內存訪問 – Bill 2013-05-10 19:57:41

+0

您的問題沒有提供關鍵細節來回答它。你在哪裏碰到''崩潰? – Zaffy 2013-05-10 19:58:07

+0

它在第二次迭代後崩潰 – user1816546 2013-05-10 20:16:50

回答

2

問題:

  1. nodearray未初始化 - 在它的指針有不確定的值。解引用它們會調用未定義的行爲。

  2. for(j = 0; j < 33; j++) - 但您聲明nodearray爲32個元素長。很難說如果沒有看到Insert()的實現,但可能你也有一個錯誤的錯誤(你正在讀/寫超過數組的末尾)。

+0

謝謝!我會看看我能做什麼。 – user1816546 2013-05-10 20:18:38