2012年5月3日

判断单链表是否有环的两种方法

摘要: 如图,如果单链表有环,则在遍历时,在通过6之后,会重新回到3,那么我们可以在遍历时使用两个指针,看两个指针是否相等。方法一:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环方法二:使用p、q两个指针,p每次向前走一步,q每次向前走两步,若在某个时候p == q,则存在环。代码如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define LEN 8 5 typede 阅读全文

posted @ 2012-05-03 14:06 NULL00 阅读(16781) 评论(2) 推荐(1) 编辑

导航