如何判断链表是否有环
基本思想:
使用快慢指针,慢指针每次向后移动一个位置,快指针每次移动两个位置。
这样如果没环,快指针或快指针的next先为空,返回false
若有环,快指针一定可以追上慢指针,即两者会相等,则返回true
代码
1 bool HaveHuan(ListNode LN){ 2 ListNode p=LN; 3 ListNode pSlow=pFast=p; 4 while(pFast!=NULL&&pFast->next!=NULL){ 5 pSlow=pSlow->next; 6 pFast=pFast->next->next; 7 if(pSlow==pFast){ 8 return true; 9 } 10 } 11 return false; 12 }