您的位置:首页 > 其它

判断一个链表是否为循环链表

2007-09-09 16:12 344 查看
方法:

设两个指针同时指向头节点,一个指针的移动步长为1,另一个指针的移动步长为2,若两个指针能再次相遇,说明该链表为循环链表.

说明:若某单链表L只包含头节点head,则head->next==NULL;

  若某个循环链表只包含头节点,则head->next=head;

bool IsLoopList(LinkNode *L){
 LinkNode *p1=L,*p2=L;
 if(L->next==NULL)//只包含头节点,且头节点的next为NULL说明肯定不是循环链表
  return false;
 do{
  p1=p1->next;
  p2=p2->next->next;
 }while(p2 && p2->next && p1!=p2);
 if(p1==p2)
  return true;
 else
  return false;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null