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

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

判断空链表的条件是:


head==head->next;
rear==rear->next;

循环链表优点

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

判断单链表是否有 环
使用两个指针 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 就判断相等,说明有环。

  • 看我那么可爱n(≧▽≦)n
  • 关注我的微薄 (梁同桌):http://weibo.com/tongrenyinsheng
  • 个人博客: www.liangtongzhuo.com
  • ios 个人写的app (同人音声)ASMR音乐

你可能感兴趣的:(循环链表 (单向) 判断是否有环)