#     def __init__(self, x):
#         self.val = x
#         self.next = None

#
# 
# @param pHead1 ListNode类 
# @param pHead2 ListNode类 
# @return ListNode类
#
class Solution:
    def FindFirstCommonNode(self , pHead1 , pHead2 ):
        # write code here
        p1 = pHead1  # 两个变量指向的虽然是同一块区域,但是下面也只是修改了p1的指向,即修改的是p1,而不是共同的区域,所以pHead1的指向还是没有改变
        p2 = pHead2
        while p1 != p2:
            if p1: # 不能用if p1 and p1.next: 否则就考虑不到最后为空的情况
                p1 = p1.next
            else:  # 注意这里不是指向pHead2,而是直接等于pHead2,即从pHead2重新开始遍历
                p1 = pHead2
                
            if p2:  # 不能用if p2 and p=2.next: 否则就考虑不到最后为空的情况
                p2 = p2.next
            else:
                p2 = pHead1
        return p1