我有一个由父节点和子节点组成的树数据结构,是这样的:
<Node1>
<Node2/>
<Node3>
<Node4/>
</Node3>
</Node1>
为了解析结构,我使用了 μ 递归函数:
void RecursiveFunction(NodeT node)
{
if(node.has_child())
RecursiveFunction(node.child());
}
当我调用 RecursiveFunction 作为参数传递时,例如,Node2 我想访问父亲(Node1)数据而不使用其他数据结构存储这些数据,因为第一个节点的数据已存储在调用中在进行递归调用之前堆栈。所以我需要访问调用堆栈来读取 Node1 的数据,同时解析 Node2 无法直接访问父亲,等等。
例如,如果我正在解析 Node4:
void RecursiveFunction(NodeT node)
{
/* Access to Node3 and Node1 data...
if(Node4.has_child())
RecursiveFunction(Node4.child()); */
}
这可能吗?以什么方式?
谢谢。
最佳答案
这是可能的,但这样做是相当危险的。这主要是因为您想弄乱进程堆栈。此外,我认为没有任何库函数可以这样做,也就是说您必须进行一些指针运算才能实现这一点。
关于c++ - 如何访问调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279785/