'''
方法二:首先创建一个以节点ID为Key的HashSet集合,用来存储曾经遍历过的节点。然后同样从头结点开始,依次遍历单链表中的每一个节点。
每遍历一个新节点,都用新节点和HashSet集合中存储的节点进行比较,如果发现HashSet中存在与之相同的节点ID,则说明链表有环,
如果HashSet中不存在与新节点相同的节点ID,就把这个新节点ID存入HashSet中,之后进入下一节点,继续重复刚才的操作。
'''
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
head=node1
dict = {id(node1):node1.data}
isFound=True
while head !=None:
isFound=False
if(head.data==node1.data):
head=head.next
continue
for i in dict.values():
if(int(i)==head.data):
print(head.data)
isFound=True
break
if(isFound):
break
dict[id(head)]=head.data
head=head.next
判断链表是否有环(2)
最新推荐文章于 2024-04-22 20:33:24 发布