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

单循环链表——在单链表中,将终端结点的指针域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音乐

转载于:https://juejin.im/post/5a31f142f265da431280ed9a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值