Algorithm 连接这两个概念需要帮助
最近学习了“环形队列”的概念,因为我更熟悉用于链表周期检测的龟兔算法,我想知道环形队列的工作原理是否与链表中的上述循环检测算法有某种联系,因为它们都是围绕一个循环进行遍历的,然后两个指针相遇。我想你在这里只看到了模式Algorithm 连接这两个概念需要帮助,algorithm,data-structures,queue,linked-list,Algorithm,Data Structures,Queue,Linked List,最近学习了“环形队列”的概念,因为我更熟悉用于链表周期检测的龟兔算法,我想知道环形队列的工作原理是否与链表中的上述循环检测算法有某种联系,因为它们都是围绕一个循环进行遍历的,然后两个指针相遇。我想你在这里只看到了模式 循环缓冲区只是一种数据结构。龟兔算法也适用于不仅仅是循环队列的事情,甚至在“指针”是隐式的情况下(比如为函数寻找固定点)。我不确定这些是否直接相关 在链表检测算法中,我们试图通过选择一种方案来检测链表中循环的可能性,该方案在存在链表时强制两个指针碰撞 在循环缓冲区中,指针冲突表示缓
循环缓冲区只是一种数据结构。龟兔算法也适用于不仅仅是循环队列的事情,甚至在“指针”是隐式的情况下(比如为函数寻找固定点)。我不确定这些是否直接相关 在链表检测算法中,我们试图通过选择一种方案来检测链表中循环的可能性,该方案在存在链表时强制两个指针碰撞 在循环缓冲区中,指针冲突表示缓冲区已满或为空 我的猜测是,我们在这里可以得出的唯一联系是,循环数据结构易于检测某些条件,只有两个指针在局部移动,而不是更“全局”的算法。例如,在链表中查找循环也可以通过DFS完成。a是一种数据结构,是一种。。。算法,所以任何类比都有局限性 但我会尝试:
+-------------------+-----------------------------------+---------------------------+
| | Circular buffer | Floyd's algorithm |
+-------------------+-----------------------------------+---------------------------+
| Tortoise | Start pointer | Slow pointer |
| Hare | End pointer | Fast pointer |
| Act I | Tortoise sleeps, hare walks | Tortoise walks, hare runs |
| Act II | Hold hands; walk together forever | No act II |
| Ends Romantically | Yes | Only if a cycle exists |
+-------------------+-----------------------------------+---------------------------+