笔试笔记————判断单向链表是否存在循环

来源:互联网 发布:中国酒类行业产量数据 编辑:程序博客网 时间:2024/06/05 20:20

在只给出头指针的条件下,如何判读单向链表存在循环


最直观的,链表的指针是否有指向同一地址的,如果有则存在。

还有一种较为灵活的算法,设置两个指针,其中一个的指针增量是另一个的一倍,追逐另一个,如果相遇了则存在循环。


伪代码如下:

*p = head .next;

*q = p;

while(p != null && q != null && p.next != null)

{

           if(*q ==*p)  equal;

           else not equal;

}

循环执行完说明没有相遇,not equal

0 0
原创粉丝点击