输入两个链表,找出它们的第一个公共结点。
有公共节点的链表一定是Y字形,而不是X字形。
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        //遍历得到两个链表长度
        int len1=0;
        int len2=0;
        ListNode* p1=pHead1;
        ListNode* p2=pHead2;
        while(p1){
            ++len1;
            p1=p1->next;
        }
        while (p2) {
            ++len2;
            p2=p2->next;
        }
        
        //较长的链表先走dif个
        p1=pHead1;
        p2=pHead2;
        int dif=abs(len1-len2);
        if(len1>=len2){
            while(dif--){
                p1=p1->next;
            }
        }
        else{
            while(dif--){
                p2=p2->next;
            }
        }
        
        //找第一个公共节点
        while(p1){
            if(p1==p2){
                return p1;
            }
            else{
                p1=p1->next;
                p2=p2->next;
            }
        }
        
        return nullptr;
    }
};原文:https://www.cnblogs.com/coding-gaga/p/10485368.html