/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
//任一链表为null,返回null
if(pHead1==null||pHead2==null)return null;
//定义两个指针分别指向两个链表头节点
ListNode p1=pHead1;
ListNode p2=pHead2;
//进入循环,每个指针都走过两个链表节点总数的路程
//如果存在两个指针相等,第一种是存在公共节点,第二种是走完路程,无公共节点,都指向null
//两种情况都需要终止循环,因此判断p1、p2相等时,break
while(p1!=p2){
p1=p1.next;
p2=p2.next;
if(p1==p2)break;
if(p1==null){
p1=pHead2;
}
if(p2==null){
p2=pHead1;
}
}
//返回p1或p2
return p1;
}
}