快慢指针的妙用

1.判断是否有环

站在用户的角度思考问题,与客户深入沟通,找到天峻网站设计与天峻网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都网站设计、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖天峻地区。

通常情况下单链表的尾节点是为NULL的,如果一个单链表存在环必然会使尾节点的指针域

存放的是其中某个节点的地址,这样就形成了环状结构.

在环中fast走两步,slow走一步,总会在某个时候,fast=slow

bool hasCycle(SLinkNode *L){
    SLinkNode*p,*q;
    p=q=L;
//如果链表中只存在一个节点或者为空链表,则没有环
    if(L==NULL||L->next==NULL)
return false;
while(q!=NULL&&q->next!=NULL){
        q=q->next->next;
        p=p->next;
if(p==q)//快慢指针相遇则存在环
        return true; 
    } 
return false;
}

分享名称:快慢指针的妙用
文章分享:http://scyanting.com/article/dsoipop.html