/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
int GetLength(ListNode* head){
int len = 0;
while(head != NULL){
len++;
head = head->next;
}
return len;
}
ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {
int len1 = GetLength(pHead1);
int len2 = GetLength(pHead2);
if(len1 < len2){
ListNode* temp = pHead2;
pHead2 = pHead1;
pHead1 = temp;
int tempInt = len1;
len1 = len2;
len2 = tempInt;
}
for(int i = 0; i < len1 - len2; i++)
pHead1 = pHead1->next;
for(int i = 0; i < len2; i++)
if(pHead1 == pHead2)
return pHead1;
else{
pHead1 = pHead1->next;
pHead2 = pHead2->next;
}
return NULL;
}
};