res =[1,2,3,4,5]# 以res列表第一项为新节点创建链表
head = ListNode(res[0])# 尾插法
p = head
for i inrange(1,len(res)):# 节点下一项为值为res[i]的新节点
p.next= ListNode(res[i])# 遍历
p = p.nextreturn head
头插法
res =[1,2,3,4,5]# 以res列表第一项为新节点创建链表
head = ListNode(res[0])# 头插法for i inrange(1,len(res)):# 新节点p,值为res[i]
p = ListNode(res[i])# p的next指向链表头
p.next= head
# 更新链表头为新节点
head = p
return head
# 快慢指针
slow = fast = head
# 快指针条件while fast.nextand fast.next.next:
slow = slow.next
fast = fast.next.nextreturn slow
从中间分割列表
defsplit(head: ListNode)-> ListNode:
slow, fast, prev = head, head,Nonewhile fast and fast.next:
prev, slow, fast = slow, slow.next, fast.next.next# 将前半部分与后半部分断开
prev.next=Nonereturn slow
mid = split(head)
left = head
right = mid
链表是否有环
# 如果为空或者只有单一节点ifnot head ornot head.next:returnFalse# 快慢指针
slow = fast = head
while fast.nextand fast.next.next:
slow = slow.next
fast = fast.next.next# 判断slow是否与fast相同,来判断是否有环if slow == fast:returnTruereturnFalse