原题是这样,要求是,返回带有环形单链表的环的第一个节点。。在不改变程序框架的基础上改错。。
我上网找了各种博客看。。感觉没有一个是对的,于是我就自己写了一个时间复杂度非常高的。。。不过基本不改变原程序框架。。我加了一个快慢链表来避免死循环。。但是时间复杂度o(2*n^2)也就是0(n^2)。。惨不忍睹。。欢迎大牛指导。
LinkedList* IsExitLoop(LinkList *head)
{
LinkedList *pCur;
LinkedList * pStart = pHead;
while(pStart != NULL)
{
pCur = pStart->pNext;
pCurfast = pCur->pNext;
int times = 0;
for(;pCur!=NULL && times<2;)
{
if(pStart == pCur->pNext)
return pStart;
if(pCur == pCurfast)
times ++;
pCur = pCur->pNext;
pCurfast = pCurfast->pNext->pNext;
}
pStart = pStart->pNext;
}
return pStart;
}
编程之美3.11扩展问题 简单并带有错误的环形单链表检测代码
原文:http://blog.csdn.net/liuqiyao_01/article/details/19610973