如何判断单链表中有环?
【注】单链表有关内容在这里---->https://blog.csdn.net/qq_38193883/article/details/93322720
-
单链表中的环:是指链表的尾结点指向了链表中的某个节点Such as :
有两种常用方法:
One:
使用p、q两个指针,P总是向前走,但q每次都从头开始走,
对于每个节点,通过判断p和q的步数是否相同,当nump!=numq时,证明有环。
【 Such as 】 观察上图:
当p到达-->6需要前进5步,q也需要5步
继续:当p由6-->到达3,此时p已经前进了共 5+1==6 步,而q又重头开始,前进2步到达3
此时6!=2,因此有环。
Two:
使用p、q两个指针,p每次向前走一步,q每次向前走两步
若在某个时刻p==q,则存在环
【 Such as 】 观察上图:
p 到达 2 时 <---> q 到达 1+2=3
p 到达 3 时 <---> q 到达 3+2=5
p 到达 4 时 <---> q 到达 5+2=6+1--->3
p 到达 5 时 <---> q 到达 3+2=5 ,此时p与q相遇,证明有环。
-
正经致谢: