Go中怎么遍历环形链表

avatar
作者
筋斗云
阅读量:1

在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 } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!