2013-05-10 95 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