循环可能出现在单链表(SLL)中 要删除列表中的循环,首先我们需要检测SLL中的循环,然后删除循环。
任何人都可以告诉如何使用伪代码删除SLL中的循环吗? 我们可以用3个指针来做吗? 是否有任何替代方案可以完成任务?
答案 0 :(得分:1)
你问的问题有很多解决方案。最容易但效率最低的方法之一是在记住头节点的同时反转列表。如果你回到头节点,那么你知道存在一个循环。
另一种检查方法是通过为列表中的每个节点创建一个包含int的数组,每次访问节点时,都会增加其在数组中的相应值。然后,您所要做的就是检查数组中的值是否有多个,然后将其与额外迭代开始的位置进行比较。此方法检测完整循环和小循环。希望这很有用。