原题是这样,要求是,返回带有环形单链表的环的第一个节点。。在不改变程序框架的基础上改错。。
我上网找了各种博客看。。感觉没有一个是对的,于是我就自己写了一个时间复杂度非常高的。。。不过基本不改变原程序框架。。我加了一个快慢链表来避免死循环。。但是时间复杂度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