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;
}
原文地址:http://blog.csdn.net/paul313/article/details/44275615