推断单链表是否有环


struct LinkedListNode
{
 int data;
 LinkedListNode* next;
};


bool IsCircle(LinkedListNode* head)
{
 if (head == NULL || head->next)
 {
  return false;
 }

 LinkedListNode* p = head;
 LinkedListNode* q = head;

 while (p != NULL && q != NULL)
 {
  p = p->next;
  q = q->next;
  if (q != NULL)
  {
   q = q->next;
  }

  if (p == q)
  {
   return true;
  }
 }

 return false;
}

posted @ 2016-01-31 11:59  zfyouxi  阅读(111)  评论(0编辑  收藏  举报