如何判断链表是否存在环?

魏小言 魏小言 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

目录

题目

思路

代码

附录

如何判断链表是否存在环?
题目
如何判断链表是否存在环?

思路
快慢指针,链表存在环,快指针将会等于慢指针,返回 true;非环,则会遇 nil,返回 false

代码
package main
 
import "fmt"
 
func main () {
 
    a:= new(ListNode)
 
    b:= new(ListNode)
 
    c:= new(ListNode)
 
    a.Next = b
 
    a.Val = 0
 
    b.Next = c
 
    b.Val = 1
 
    c.Next = a
 
    c.Val = 2
 
    fmt.Println("hello https://tool.lu/",IsCys(a))
 
}
 
type ListNode struct{
 
    Val int
 
    Next *ListNode
 
}
 
func IsCys(l *ListNode) bool{
 
    if l == nil || l.Next == nil{
 
        return false
 
    }
 
    s:=l
 
    f:=l.Next
 
    for f!=s{
 
        if f==nil || f.Next==nil{
 
            return false
 
        }
 
        s = s.Next
 
        f = f.Next.Next
 
    }
 
    //入环的第一个节点
 
    fmt.Println("next node is :",s.Next.Val)
 
    return true
 
}
附录
————————————————
版权声明:本文为CSDN博主「魏小言」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34417408/article/details/124490693

...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
魏小言
魏小言 优质创作者: 云计算技术领域 优质创作者: 云计算技术领域领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
code杂坛 16 成员 76 内容