您的位置:首页 > 编程语言 > C语言/C++

关于链表中是否带环和找到环的入口点

2016-09-02 22:33 197 查看
面试题一:判断链表是否带环

<span style="font-size:18px;"><strong style="background-color: rgb(255, 255, 255);">int FndLoop(pLinkList list)
{
pLinkNode fast=list->pHead;
pLinkNode slow=list->pHead;
assert(list);
while(fast!=NULL && fast->next!=NULL)
{
slow=slow->next;
fast=fast->next->next;
if( fast!=NULL && slow==fast)
{
return 1;//有环
}
}
return 0;//无环
}</strong></span>
面试题二:找到环的入口点


<span style="font-size:18px;"><strong>pLinkNode FndLoopNode(pLinkList list)
{
pLinkNode fast=list->pHead;
pLinkNode slow=list->pHead;
assert(list);
while(fast!=NULL && fast->next!=NULL)
{
slow=slow->next;
fast=fast->next->next;
if( fast!=NULL && slow==fast)
{
break;
}
}
slow=list->pHead;
while(slow!=fast)
{
slow=slow->next;
fast=fast->next;
}
return slow;
}</strong></span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息