假设我有一个这样的结构:
(define-struct node (value next))
;and making 2 nodes, parent pointing to child as next.
(define child (make-node 2 null))
(define parent (make-node 1 child))
在PLT方案下,当我手里有孩子(不知道父母是指针)时,是否有可能在不知道父母的情况下找到指向节点sctuct?
不,这是不可能的。事实上,如果您不在任何地方保留对父对象的引用,则父对象可能会被垃圾回收。任何可以被证明永远不可到达的对象都可以随时被删除。如果您不在任何地方存储对该对象的引用,则它是不可访问的。
现在,如果你真的想回到父母身边,有几个选择。您可以在子节点中保存对父节点的引用(您必须在创建父节点后设置它)。一种不太理想的解决方案,但如果您由于某种原因无法更改相关数据结构,则可以使用的解决方案是保留您创建的所有节点的列表,然后在该列表中搜索具有子节点的节点曾是eq?
到有问题的节点。或者您也可以这样做,但将它们保存在一个哈希表中,键是子项,值是父项(或父项列表,如果可以有多个),以提高效率。我不确定这些解决方案中的任何一个是否对您有用,因为它们可能取决于您使用的语言水平,如果您是在入门课程中这样做而不使用完整的语言。
不,你不能。你是从哪里想到这可能的?