# 迭代法defreverse_list(head):
pre =None
cur = head
while cur:
temp = cur.next
cur.next= pre
pre = cur
cur = temp
return pre
# 递归法defreverse_list(head):if head isNoneor head.nextisNone:return head
p = reverseList(head.next)
head.next.next= head
head.next=Nonereturn p
2. 合并有序链表
defmerge_two_lists(l1, l2):if l1 isNoneand l2 isNone:returnNone
headA = l1
headB = l2
head = ListNode(0)
res = head
while headA and headB:if headA.val < headB.val:
head.next= headA
headA = headA.nextelse:
head.next= headB
headB = headB.next
head = head.nextif headA:
head.next= headA
if headB:
head.next= headB
return res.nextdefmergeTwoLists(l1, l2):
prehead = ListNode(-1)# 定义新链表的头部
prev = prehead
while l1 and l2:if l1.val <= l2.val:
prev.next= l1
l1 = l1.nextelse:
prev.next= l2
l2 = l2.next
prev = prev.next# 判断是否有l1或者l2未被链接上,如果有则直接链接
prev.next= l1 if l1 isnotNoneelse l2
return prehead.next
3. 找到两个单链表相交的起始节点
defget_intersection_node(headA, headB):
ha,hb = headA,headB
while ha!=hb:
ha = ha.nextif ha else headB
hb = hb.nextif hb else headA
return hb