判断一个链表是否为循环单链表

来源:互联网 发布:中国中医药数据库 编辑:程序博客网 时间:2024/06/01 20:02

判断一个链表是否为循环单链表:

#设置两个指针(fast, slow),slow步长为1,fast步长为2,

大概的思路如下:
如果链表为循环单链表,则fast与slow必定相遇。
如果链表不为循环单链表,则fast必定先指向NULL。

int IsLoopList(list *head){      list *s = head->next;        //慢指针    list *f = head->next->next;  //快指针     if ((NULL == head) || (NULL == head->next))    {        return -1;    }    while ((s != NULL) && (f != NULL) && (f->next != NULL))    {       if (s == f)       {           return 0;  //是循环单链表       }        s = s->next;        f = f->next->next;    }       return -1;} 


0 0
原创粉丝点击