如何解决将树结构数据存储到 C 中的数组中,而无需在函数外部声明该数组
我正在尝试使用中序横向编写横向树结构数据的代码,并将所有树节点存储到数组中。
void inorderTraversal(AVLTreeNode *node,AVLTreeNode *nodesArray[],int *index)
{
if (node == NULL)
return;
inorderTraversal(node->left,nodesArray,index);
nodesArray[*index] = node;
(*index)++;
inorderTraversal(node->right,index);
}
如果我在主函数中首先声明 index
如下
int index = 0;
inorderTraversal(tree->root,&index);
但如果我只是在下面这样做,它就行不通。
inorderTraversal(tree->root,&0);
解决方法
&0
没有意义,因为 &
运算符用于获取对象的地址。整数文字不是对象,因此没有地址。
如果你不打算在函数完成后使用 index
的值,你可以传递一个复合字面量的地址:
inorderTraversal(tree->root,nodesArray,&(int){0});
这会创建一个临时对象,该对象的地址可以被使用,并且在使用它的语句之后不再存在。
不过,我认为您希望保留此值,以便您知道 nodesArray
完成后 inorderTraversal
中有多少个值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。