c - 打印节点数组

标签 c avl-tree

是否可以打印节点数组?我需要在构建时显示 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);
    }
}

最佳答案

问题:

  1. nodearray未初始化 - 其中的指针具有不确定的值。取消引用它们会调用未定义的行为。

  2. for( j = 0; j < 33; j++) - 但你声明了 nodearray长度为 32 个元素。没有看到 Insert() 的实现很难判断,但您可能还有一个差一错误(您正在读取/写入超出数组末尾的位置)。

关于c - 打印节点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489895/

相关文章:

java - 用AVL树实现Bentley-Ottmann算法

c++ - 使用 'typename' 关键字将非类型视为依赖上下文中的类型

c - 发送信号和 pselect?

c - c 中的 gethostbyname() 替代品

c - 字符数组作为 C 中的队列

data-structures - AVL树删除规则

java - AVL 平衡树 - 打印最后 10 个节点

c - 如何在 C 中使用 GMP 库分配浮点值?

c - “如何从C中的文件中查找2D数组中的最大值”

java - 计算平衡系数