引入
上一节,我们学习了尾指针,并且利用尾指针。尾指针可以轻松的操作头结点和尾结点,可以将两个单循环链表组成了一个单循环链表,我们今天再看看,尾指针还有什么其它玩法。
单链表中的环
首先要明白,单链表有环的状态是什么样子得

其实就是,尾指针指向了链表中的某个结点。
如何判断单链表中是否有环
方法 1
- 设置 p 、q 两个指针
- p 向前走,q 从头走,p 向前走尾部应该会到 NULL。
- 每个结点,p 走的步数应该和 q 一样
- 如果不一样,就像上面的图,p 的地址等于 q
- 但是,p 走到3用了6步,q 则用了2步
- 步数不相等,那么就存在环
方法 2
- 设置 p 、q 两个指针
- p 每走一步,q 就走两步,快慢指针
- 快指针应该很快到 NULL
- 如果 p==q 了,则存在环
