两个单链表相交的起始节点

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

根据快慢法则,走的快的一定会追上走得慢的。
有的链表短,他走完了就去走另一条链表,我们可以理解为走的快的指针。
那么,只要其中一个链表走完了,就去走另一条链表的路。如果有交点,他们最终一定会在同一个
位置相遇

    if headA is None or headB is None: 
        return None
    cur_a, cur_b = headA, headB     # 用两个指针代替a和b


    while cur_a != cur_b:
        cur_a = cur_a.next if cur_a else headB      # 如果a走完了,那么就切换到b走
        cur_b = cur_b.next if cur_b else headA      # 同理,b走完了就切换到a

    return cur_a

疑问:if cur_a else headB 这是什么意思? 我没见过这种 if_else 为什么可以代表 a与b的切换

cur_a = cur_a.next if cur_a else headB 等价于
if cur_a:
cur_a = cur_a.next
else:
cur_a = headB
不过话说回来,你这代码是假定两个链表必定相交且不等长,然后去找交点。倘若两个链表不相交,或者等长,则一直是死循环啊