class Node:
def __init__(self, data):
self.data = data
self.next = None
def has_cycle(head):
slow = head
fast = head
while fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow == fast:
return True # 检测到环
return False
# 使用示例
head = Node(1)
head.next = Node(2)
head.next.next = Node(3)
head.next.next.next = head # 创建一个环
print(has_cycle(head)) # 输出: True
变体有双向链表,循环链表
一个标准有效的 链表是
对应题目: https://leetcode.cn/problems/design-linked-list/submissions/
下面是一个标准的 链表 的实现:
算法
反转链表
检测链表中的环
环形链表是指链表中存在一个节点指向之前某个节点的情况。检测环的方法通常使用快慢指针(Floyd’s Cycle-Finding Algorithm)。
合并两个有序链表
将两个有序链表合并为一个有序链表是一个常见的算法问题。
删除链表中的重复节点
在一个排序的链表中,删除重复的节点,使每个元素只出现一次。
查找链表中的中间节点
查找链表中间节点的方法之一是使用快慢指针。