how do you remove a cycle in a single linked list?
在我编写一些示例代码来实现这个答案所描述的功能之前,是否有人已经有了一个修复指向自身的单链列表的C示例?
我了解检测部件(乌龟/兔子),但维修部件对我来说有点模糊。
最佳答案
您链接到的文章有一些算法,允许您计算具有两个引用的节点,一个来自列表开头,另一个来自应该是列表“结尾”的节点。如果可以找到该节点,那么肯定可以找到应该位于列表末尾的节点。找到那个节点。将其“下一个”引用设置为空。
我的建议是:在你的白板上画很多很多盒子和箭头。通过在板上手动运行六次,了解算法的工作原理一旦你理解了它是如何在视觉上工作的,那么写代码就会简单得多(由于这个原因,我的白板上通常塞满了十几种不同颜色的盒子和箭头……)
关于c# - 是否有人拥有C#代码来修复循环的链表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1925561/