我有父节点和子节点,像这样由树形数据结构:如何访问调用堆栈?
<Node1>
<Node2/>
<Node3>
<Node4/>
</Node3>
</Node1>
并解析结构我使用的是μ-递归函数:
void RecursiveFunction(NodeT node)
{
if(node.has_child())
RecursiveFunction(node.child());
}
当我打电话RecursiveFunction作为参数传递,例如Node2,我希望有权访问父节点(Node1)的数据,而不使用额外的数据结构存储这些数据,因为在进行递归调用之前,第一个节点的数据已存储在调用堆栈中。所以我需要访问调用堆栈来读取Node1的数据,而我正在解析Node2无法直接访问父节点,等等。
例如,如果我解析节点4:
void RecursiveFunction(NodeT node)
{
/* Access to Node3 and Node1 data...
if(Node4.has_child())
RecursiveFunction(Node4.child()); */
}
这可能吗?以什么方式?
谢谢。
这是一个非常糟糕的主意。如果你想这样做,在'NodeT'中包含一个父指针。试图弄乱堆栈中的地址将会是a)混乱,b)极不可移植,c)可能不可靠。 – delicateLatticeworkFever 2012-04-23 11:44:44
为什么不把这个状态存储在Node中,然后执行'node.parent()'? – RedX 2012-04-23 11:45:19
你让我看着'μ递归'。 – 2012-04-23 11:48:50