循环链表 (单向) 判断是否有环

单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点。

判断空链表的条件是:

<pre>
head==head->next;
rear==rear->next;
</pre>

循环链表优点

在单链表中,从一已知结点出发,只能访问到该结点及其后续结点,无法找到该结点之前的其它结点。而在单循环链表中,从任一结点出发都可访问到表中所有结点,这一优点使某些运算在单循环链表上易于实现。并且不增加任何存储空间。

判断单链表是否有 环
使用两个指针 p 和 q
  • p指针 每次走一步
  • q指针 每次从头 走, 直到追上 p指针

p走到1, q也走到1.
p走到2, q从头 1, 2
p走到3, q从头 1 ,2 ,3
p走到4, q从头 1, 2 ,3 ,4
p走到5, q从头 1 ,2 ,3 ,4 ,5
p走到6, q从头 1 ,2 ,3 ,4 ,5, 6
--- 重点来了
p走到3, q从头 1 ,2 ,3 //这里发生 q 还有没追上 p 就判断相等,说明有环。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文内容取自于小甲鱼的数据结构与算法。http://www.jianshu.com/p/230e6fde9c75 ...
    阿阿阿阿毛阅读 2,961评论 0 7
  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,494评论 1 3
  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 3,548评论 4 74
  • 1.线性表的定义 线性表:零个或多个数据元素的有限序列序列:也就是说元素之间是有顺序的,若元素存在多个,则第一个元...
    e40c669177be阅读 2,141评论 6 15
  • 【声明】欢迎转载,但请保留文章原始出处→_→文章来源:http://www.jianshu.com/p/08d08...
    梦工厂阅读 3,805评论 3 31