如何判断链表是否有环

基本思想:

使用快慢指针,慢指针每次向后移动一个位置,快指针每次移动两个位置。

这样如果没环,快指针或快指针的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 }

posted on 2012-05-23 10:12  为梦飞翔  阅读(389)  评论(0编辑  收藏  举报

导航