给一个头指针head,判断链表LinkNode 是否有环,环上结点数
void IsLinkLoop(LinkNode *head)
{
if (head ==NULL)
{
return NULL;
}
LinkNode *p=head, *q = head;
bool isLoop = false;
while(q && q->next)
{
p = p->next;
q = q->next->next;
if(p == q)
{//确认有环
isLoop = true;
break;
}
}
//环上结点数
LinkNode *r = p;
int loopNum = 0;
do
{
p = p->next;
loopNum ++;
} while (r !=p);
}