- /* 链表的头指针为h */
- if((NULL == h) || (NULL == h->next))
- /* 头指针为空或者链表中只有一个节点,则无环,退出 */
- {
- return 0;
- }
-
- 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;
- }
- }
复制代码 |