判断链表中是否存在循环
2007-09-04 00:02
330 查看
原理:定义两个指针,一快一慢,如果有环,前进快的就会追上前进慢的。
代码:
bool CircleInList(Link* pHead)
{
if(pHead == NULL || pHead->next == NULL)//无节点或只有一个节点并且无自环
{
return (false);
}
if(pHead->next == pHead)//自环
{
return (true);
}
Link *pTemp1 = pHead;//step 1
Link *pTemp = pHead->next;//step 2
while(pTemp != pTemp1 && pTemp != NULL && pTemp->next != NULL)
{
pTemp1 = pTemp1->next;
pTemp = pTemp->next->next;
}
if(pTemp == pTemp1)
{
return (true);
}
return (false);
}
代码:
bool CircleInList(Link* pHead)
{
if(pHead == NULL || pHead->next == NULL)//无节点或只有一个节点并且无自环
{
return (false);
}
if(pHead->next == pHead)//自环
{
return (true);
}
Link *pTemp1 = pHead;//step 1
Link *pTemp = pHead->next;//step 2
while(pTemp != pTemp1 && pTemp != NULL && pTemp->next != NULL)
{
pTemp1 = pTemp1->next;
pTemp = pTemp->next->next;
}
if(pTemp == pTemp1)
{
return (true);
}
return (false);
}
相关文章推荐
- 笔试笔记————判断单向链表是否存在循环
- 判断链表中是否存在循环
- leetcode 判断简单链表是否存在循环
- 单向链表判断是否存在循环
- [算法练习FindLoop]判断单向链表是否存在循环/循环入口/环长度
- 如何判断一个单向链表是否存在循环的经典方法
- 单向链表判断是否存在循环的经典方法
- Linked List Cycle 判断一个链表是否存在回路(循环)
- 判断链表中是否有环存在
- 判断两个循环链表内容是否相等
- 判断单循环链表中是否存在环
- Linked List Cycle-- 判断一个单向链表中是否有环存在
- 判断链表是否存在环(及其延伸)
- 判断两个链表是否存在交点 并求出位置
- 判断一个单向链表中是否存在环
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- js 单次循环判断数组中是否存在重复值
- 判断链表是否存在环并找出环的入口
- 如何判断链表是否有环的存在
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)