双链表中的循环开始?

时间:2011-10-26 15:02:23

标签: c++ c linked-list

我遇到的一个问题, 在循环链表中,在循环开头找到节点?

示例输入:A - > B - > C - > D - > E - > C [与之前相同的C]输出:C

其中一个解决方案是,可以查看存储在这些节点上的值的地址是否相同?

像&(A-> value)这样的东西会返回我们的地址,然后我们会发现地址是否重复,如果是,那么这是循环的开始?

1 个答案:

答案 0 :(得分:3)

你可以这样做,但就空间复杂性而言,这是非常没有效率的,因为你需要存储你在路上看到的所有节点。

更好的解决方案可能是Floyd's cycle查找算法,如this post

中所述