然后问题就转化为了如何知道哪个链表的长度更长一点,比长度短的链表多了几个结点。解决这个问题的话,我们只需要先设置两个指针,分别指向两个链表的头节点,然后当一个指针指向空了以后开始计数,看另一个指针走多少步才会指向空。

struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        ListNode* L1 = pHead1;
        ListNode* L2 = pHead2;
        int l1 = 0,l2 = 0;
        while(L1 !=NULL || L2!= NULL)
        {
            if(L1!=NULL){L1 = L1->next;}
            else{ l2++; }
            if(L2 != NULL){L2 = L2->next;}
            else{ l1++; }
        }
        L1 = pHead1;
        L2 = pHead2;
        while(l1!=0)
        {
            L1 = L1->next;
            l1--;
        }
        while(l2!=0)
        {
            L2 = L2->next;
            l2--;
        }
        while(L1!=L2)
        {
            L1 = L1->next;
            L2 = L2->next;
        }
        return L1;
    }
};