很簡單的一種方法就是,設置兩個指針,一個每次遞增一步,一個每次遞增兩步,若是有環二者必然重合。
struct node
{
char val;
node *next;
};
bool check_circle(const node *head) //有環return true;無環 return false
{
if(NULL == head)
return false;
node *low=head, *fast=head->next;
while(NULL != fast && NULL != fast->next)
{
low = low->next;
fast = fast->next->next;
if(low == fast)
return true;
}
return false;
}node