【发布时间】:2012-12-17 08:34:22
【问题描述】:
您好,我想制作一棵树,在父子之间保持双向引用。但似乎不可能实现,因为当我创建第一个对象时,我没有另一个对象,因此无法引用它。这是一些示例代码。
-record(node,{name,children,root}).
main()->
A = #node{name="node-A",
children=[B], %variable B is unbound
root=nil},
B = #node{name="node-B",
children=[],
root=A},
Tree = A.
这个问题的另一个例子是实现一个双向链表 (http://en.wikipedia.org/wiki/Doubly_linked_list)
-record(node,{prev,name,next}).
main()->
A = #node{prev=nil,
name="node-A",
next=B}, % variable B is unbound
B = #node{prev=A,
name="node-B",
next=nil},
LinkedList = A.
有没有办法实现这种结构。
【问题讨论】:
-
为什么不在 -define 中定义你的结构,其中子项默认为未定义。然后在创建节点 B 后创建 NodeA = B#node{children=A}.... 抱歉,无法正常工作。希望我知道如何删除笔记
-
为什么不尝试先创建孩子然后分配他们父母?或者创建父母并给他们默认的孩子,然后一旦孩子准备好,更新父母?