确定单链表是否有循环是一个常见的面试问题。但是为什么链表存在循环?具有循环的链表何时有用?
答案 0 :(得分:4)
Circularly linked lists会很有用。它们简化了这些操作的算法,因为您不必考虑列表的开头或结尾。
答案 1 :(得分:1)
然后,您将哪个元素作为参数传递给函数并不重要。使用sentinel模式时,您将遍历每个元素。
答案 2 :(得分:0)
Apache使用循环链接列表来存储其所有过滤器。
出于某种原因,他们给了它一个花哨的营销名称("Bucket Brigades")并称之为“一项重大创新” - 大声笑。
答案 3 :(得分:0)
要使用循环链接列表,您可以考虑本质上是循环的结构。例如以FIFO顺序使用和释放的缓冲池,或者应该以循环顺序分时的一组进程,或者以特定顺序保存多边形的节点坐标。
答案 4 :(得分:0)
此处给出的许多答案都考虑完全循环链接列表。
面试问题有点不同。我们要在链接中的某处检测循环(可以是部分)
例如:(抱歉图形不佳)
1 -> 2 -> 3 -> 4 -> 5
^ v
7 <----- 6
回答它是如何发生的:链接损坏。
a)人们试图通过UGC(用户生成的内容)进入。可能会出现不良数据
b)早期设计缺陷。
此循环检测也是我们在LinkedLists上进行测试的一部分,用于查找可疑错误。
你没有要求解决方案,但我会在此简要介绍一下: