160. 相交链表

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {

        int a = 0;

        ListNode* pa = headA;

        while(pa)

        {

            a++;

            pa = pa->next;

        }

        int b = 0;

        ListNode* pb = headB;

        while(pb)

        {

            b++;

            pb = pb->next;

        }

        if(a > b)

        {

            int n = a - b;

            while(n && headA)

            {

                n--;

                headA = headA->next;

            }

        }

        else if(a < b)

        {

            int n = b - a;

            while(n && headB)

            {

                n--;

                headB = headB->next;

            }

        }       

        while(headA && headB){

            if (headA == headB){

                return headA;

            }

            headA = headA->next;

            headB = headB->next;

        }

        return NULL;

    }

你可能感兴趣的:(160. 相交链表)