#-*- coding : utf-8 -*-
#判断链表是否有环
'''
方法1.从头结点开始,依次遍历单链表中的每一个节点。每遍历一个新节点,就从头检查新节点之前的所有节点,
用新节点和此节点之前的所有节点依次做比较。如果发现新节点和之前的某个节点相同,则说明该节点被遍历过两次,
链表有环;如果之前的所有节点中不存在与新节点相同的节点,就继续遍历下一个新节点,继续重复刚才的操作。
时间复杂度为O(n**2),空间复杂度为O(1)
'''
class Node:
def __init__(self,data = None, next = None):
self.data = data
self.next = next
#单个创建节点
node1=Node(5)
node2=Node(3)
node3=Node(7)
node4=Node(2)
node5=Node(6)
node6=Node(8)
node7=Node(1)
node1.next=node2
node2.next=node3
node3.next=node4
node4.next=node5
node5.next=node6
node6.next=node7
node7.next=node4
head1=node1
isFound=True
while head1 != None:
data=head1.data
if(data==node1.data):
head1 = head1.next
continue
isFound=False
head = node1
while head !=None:
data1 = head.data
if (data == data1):
print(data)
isFound = True
break
if(head.next==head1):
break
head = head.next
if(isFound):
break
head1 = head1.next
判断链表是否有环(1)
最新推荐文章于 2022-03-13 12:03:12 发布