您的位置:首页 > 其它

判断链表是否存在环路

2015-06-07 19:09 239 查看
判断思路:设置两个指针(slow, fast),初始值都指向头,slow每次前进一步,fast每次前进两步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇(当然,fast先行头到尾部为NULL,则是无环链表)。

typedef struct Node{

int data;

struct Node *Next;

}*Lnklst;

bool IsExitsLoop(Lnklst pHead)

{

Lnklst slow = pHead, fast = pHead;

while(fast && fast->Next)

{

slow = slow->Next;

fast = fast->Next->Next;

if(slow == fast)

break;

}

return !(fast == NULL && fast->Next == NULL);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表