Floyd Cycle Detection Algorithm to detect the cycle in a linear Data Structure


Floyd Cycle is one of the cycle detection algorithms to detect the cycle in a given singly linked list.

In the Floyd Cycle algorithm, we have two pointers that initially point at the head. In Hare and Tortoise’s story, Hare moves twice as fast as Tortoise, and whenever the hare reaches the end of the path, the tortoise reaches the middle of the path.

Algorithm

  • Initialize Hare and Tortoise at the head node of the List.

  • Initially, the hare moves twice as fast as the tortoise.

  • Move the hare and tortoise both and find if the hare reaches the end of the Linked List, return as there is no loop in the list.

  • Otherwise, both Hare and Tortoise will go forward.

  • If Hare and Tortoise are at the same Node, then return since we have found the list cycle.

  • Else, start with step 2.

Pseudocode for the above algorithm

tortoise := headNode
hare := headNode
foreach:
   if hare == end
      return 'There is No Loop Found.'
   hare := hare.next
   if hare == end
      return 'No Loop Found'
   hare = hare.next
   tortoise = tortoise.next
   if hare == tortoise
      return 'Cycle Detected'

Updated on: 05-Feb-2021

445 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements