/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode* p = pHead1;
int len1 = 0;
int len2 = 0;
//计算链表的长度
while(p != NULL){
++len1;
p = p->next;
}
p = pHead2;
while(p != NULL){
++len2;
p = p->next;
}
ListNode* longlist = pHead1;
ListNode* shortlist = pHead2;
int lendiff = len1 - len2;
if(len2 > len1){
longlist = pHead2;
shortlist = pHead1;
lendiff = len2 - len1;
}
for(int i = 0 ;i < lendiff;++i){
longlist = longlist->next;
}
while(longlist!=NULL && shortlist!= NULL&& shortlist != longlist){
longlist = longlist->next;
shortlist = shortlist->next;
}
ListNode* firstNode = longlist;
return firstNode;
}
};