部分代码:
 p = q = h; /* 设p和 q 指针, 均指向头结点 */
 while(1)
 {
p = p->next;
q = (q->next)->next;
if((NULL == p) || (NULL == q))
{
printf(“No Ringn”); /* 链表中无环, 退出 */
return 0;
}
if(p == q) /* 链表中有环 */
{
printf(“Ring occurred/n”);
return 1;
}
 }
思路:设置两个指针同时指向链表的头,开始向前移动,一个指针一次前进一步,另一个前进两步,如果链表中有环形那么两个指针肯定会相遇。