经典OJ题:环形节点是否存在!

题目:

  • 给你一个链表的头节点 head ,判断链表中是否有环。
  • 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
  • 如果链表中存在环 ,则返回 true 。 否则,返回 false 。
  • 题源:141. 环形链表 - 力扣(LeetCode) 

示例:

经典OJ题:环形节点是否存在!_第1张图片

经典OJ题:环形节点是否存在!_第2张图片

经典OJ题:环形节点是否存在!_第3张图片 

思路:

根据经典OJ题:找环节点——代码解析-CSDN博客 得出的结论,我们设立两个指针,一个fast,一个slow,两个指针分别走一步和走两步。

根据上诉文章中得出的结论,slow指针会在环形内部和fast指针相遇,也就说当fast指针指向的节点空间地址等于slow指向的节点空间地址时,环形存在,又或者说,当环形不存在时,fast和slow的最终指向是NULL

所以我们又可以使用slow==NULL与fast==NULL以及fast->next==NULL来进行判断,链表是为环形的遍历条件。

代码演示:

经典OJ题:环形节点是否存在!_第4张图片

你可能感兴趣的:(数据结构,C问题,OJ题,链表,交点,环形链表)