我正在内存中的图形上运行一些操作,这会修改图形本身。我需要重复这些操作若干次,并且随后的重复必须在图的新副本上工作。由于图是通过解析文件生成的,所以我真的不想花时间为每次重复重新解析文件,所以我已经走了克隆原始图的路线。
我的node
,edge
和graph
类型都在实施ICloneable
,但我的循环参考链存在问题。
Node
存储来自它的定向Edge
列表。 Edge
存储权重及其指向的Node
。当两个节点共享一个双向边时,当我尝试克隆任一节点时,我得到StackOverflowException
,因为克隆任一节点的边缘列表总是意味着克隆另一个节点。
出于克隆目的,解决此循环引用的最佳方法是什么?