Go中怎么遍历环形链表

   2024-10-25 7810
核心提示:在Go中遍历环形链表可以通过两种方法实现:快慢指针法:使用两个指针,一个慢指针每次移动一步,一个快指针每次移动两步。如果链

在Go中遍历环形链表可以通过两种方法实现:

快慢指针法:使用两个指针,一个慢指针每次移动一步,一个快指针每次移动两步。如果链表中有环,那么这两个指针最终会相遇。具体实现代码如下:
type ListNode struct {    Val  int    Next *ListNode}func hasCycle(head *ListNode) bool {    if head == nil || head.Next == nil {        return false    }    slow := head    fast := head.Next    for fast != nil && fast.Next != nil {        if slow == fast {            return true        }        slow = slow.Next        fast = fast.Next.Next    }    return false}
标记法:遍历链表时,给每个节点一个标记,如果发现已经访问过的节点,则说明链表有环。具体实现代码如下:
type ListNode struct {    Val  int    Next *ListNode}func hasCycle(head *ListNode) bool {    cur := head    for cur != nil {        if cur.Val == -1 {            return true        }        cur.Val = -1        cur = cur.Next    }    return false}

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号