/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
struct ListNode* FindFirstCommonNode(struct ListNode* pHead1, struct ListNode* pHead2 ) {
// write code here
struct ListNode* L1,*L2;
L1=pHead1;
L2=pHead2;
int a=1,b=1;
if(L1==NULL||L2==NULL)return NULL;
while(L1->next){
a++;
L1=L1->next;
}
while(L2->next){
b++;
L2=L2->next;
}
L1=pHead1;
L2=pHead2;
if(a>b){
a=a-b;
while(a--){
L1=L1->next;
}
}else{
a=b-a;
while(a--){
L2=L2->next;
}
}
while(L1!=L2){
L1=L1->next;
L2=L2->next;
}
return L1;
}