是否可以打印节点数组?我需要在构建时显示 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);
}
}
最佳答案
问题:
nodearray
未初始化 - 其中的指针具有不确定的值。取消引用它们会调用未定义的行为。for( j = 0; j < 33; j++)
- 但你声明了nodearray
长度为 32 个元素。没有看到Insert()
的实现很难判断,但您可能还有一个差一错误(您正在读取/写入超出数组末尾的位置)。
关于c - 打印节点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489895/