有什么区别,你能举例说明吗?
答案 0 :(得分:7)
如果你可以从节点X开始,导航结构而不访问同一节点两次,然后返回X,那么结构是循环的。循环是沿着这样的路径访问的一系列节点。
我们通常在无向结构(两个节点之间的连接没有特定方向)中对大小为2的周期(即,访问邻居并向右后方)进行例外处理。
如果结构不是循环的,则必须是非循环的。
答案 1 :(得分:1)
如果您可以按照圆圈中的指针返回原始对象。
例如:
A-> B-> A是循环
A-> B-> C-> A是循环
A-> B A-> C C-> D B-> D不是循环(它是有向无环图)
这与refcounted smartpointer相关,后者“拥有”他们指向的对象。因为那时他们就变成了Münchhausen并且在记忆中相互拥抱,即使他们无法通过垃圾收集语言中的gc-roots到达。