溫馨提示×

Go中怎么遍歷環形鏈表

go
小億
91
2024-04-03 09:59:05
欄目: 編程語言

在Go中遍歷環形鏈表可以通過兩種方法實現:

  1. 快慢指針法:使用兩個指針,一個慢指針每次移動一步,一個快指針每次移動兩步。如果鏈表中有環,那么這兩個指針最終會相遇。具體實現代碼如下:
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
}
  1. 標記法:遍歷鏈表時,給每個節點一個標記,如果發現已經訪問過的節點,則說明鏈表有環。具體實現代碼如下:
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
}

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女