我们首先定义了一个链表节点 ListNode,然后实现了 hasCycle 函数,它接受链表头节点 head 作为参数。函数内部,我们使用两个指针 slow 和 fast,slow 每次移动一步,而 fast 每次移动两步。如果链表中存在环,那么 fast 指针最终会追上 slow 指针;如果 fast 指针到达链表的末尾(即 fast 或 fast.Next 为 nil),则说明链表中不存在环。
在 main 函数中,我们创建了一个有环的链表,并调用 hasCycle 函数来判断它是否有环,最后输出结果。
请注意,这个实现假设链表节点的 Next 指针永远不会指向 nil 以外的其他无效内存地址,否则可能会导致运行时错误。在实际应用中,确保链表节点的 Next 指针正确设置是非常重要的。