struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode *p1 = pHead1, *p2 = pHead2;
while(p1!=p2){
if(!p1){//这里跟下面直接判断!p1(!p2)而不是!p1->next(!p2->next)
//这样就不会忽略掉头结点,包括新接上来的那个链表的头结点。
p1 = pHead2;
}else{
p1 = p1->next;
}
if(!p2){
p2 = pHead1;
}else{
p2 = p2->next;
}
}
return p1;
}
};