爱问知识人 爱问教育 医院库

如何检测单链表中的是否存在环

首页

如何检测单链表中的是否存在环

最好能有程序  俺是初学者

提交回答
好评回答
  • 2012-11-21 14:27:52
       设一快一慢两个指针(Node *fast, *low)同时从链表起点开始遍历,其中快指针每次移动长度为2,慢指针则为1。则若无环,开始遍历之后fast不可能与low重合,且fast或fast->next最终必然到达NULL;若有环,则fast必然先进入环,且由于fast移动步长为2,low移动步长为1,则在low进入环后继续绕环遍历一周之前,fast必然能与low重合。
      于是函数可写如下: // 若有环,encounter是fast与low重合的地方 bool hasCircle(Node* head, Node* &encounter) { Node *fast = head, *low = head; while(fast && fast->next) { fast = fast->next->next; low = low->next; if(fast == low) { encounter = fast; return true; } } encounter = NULL; return false; } 。
      

    3***

    2012-11-21 14:27:52

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):