只用了快慢指针法,快指针每次走2步,慢指针每次走1步
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Link:
def __init__(self, node=None):
self.head = node
def if_has_circle(self):
if self.head == None:
return False
if self.head.next == None:
return False
flag = True
slow = fast = self.head
while flag:
slow = slow.next
fast = fast.next.next
if fast == None or fast.next == None:
flag = False
if slow == fast:
break
return flag
if __name__ == '__main__':
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node1.next = node2
node2.next = node3
node3.next = node2
link = Link(node=node1)
print(link.if_has_circle())