142.环形链表II
力扣题目链接(opens new window)
题意: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。
说明:不允许修改给定的链表。
代码
class ListNode:
def __init__(self,val=0,next=None):
self.val=val
self.next=next
class Mylinklist:
def __init__(self):
self.head=ListNode
self.size=0
def linkedlist(self,data,pos):
self.head=ListNode(data[0])
r,p,po=self.head,self.head,self.head
for i in data[1:]:
node=ListNode(i)
p.next=node
p=p.next
self.size+=1
if self.size==pos:
po=p
p.next=po#形成环路
return r
def printlist(self,head):
if head==None:return -1
else:
node=head
while node!=None:
print(node.val,end='')
node=node.next
if __name__=='__main__':
l=Mylinklist()
data=input("head=").split()
pos=int(input("pos="))
if pos==-1:print("null")
else:
print(pos)
l.printlist(l.linkedlist(data,pos))
结果
小结
最后打印环形链表可以看到成环成功
因为它是无限循环,要手动断掉循环