判斷一個單鏈表是否有環

 很簡單的一種方法就是,設置兩個指針,一個每次遞增一步,一個每次遞增兩步,若是有環二者必然重合。
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

相關文章
相關標籤/搜索