单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构。 判断一个链表是否有环,通常使用快慢指针的方法,也就是说一个每次指针走两步,一个指针每次只走一步,如果链表有环,则两个指针总会在一个节点上相遇,若无环,则不会相遇。 代码实现如下:
#include<iostream>
using namespace std
;
typedef struct node
{
int value
;
struct node
*next
;
}*Linklist
;
int HasCycle(Linklist head
)
{
Linklist p
;
p
= head
;
while(p
!= NULL && p
->next
!= NULL)
{
p
= p
->next
->next
;
head
= head
->next
;
if(p
== head
) return 1;
}
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-35475.html