Intersection of Two Linked Lists

来源:互联网 发布:如何打开端口8081 编辑:程序博客网 时间:2024/04/30 12:48
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)     {        if(headA==NULL || headB==NULL)            return NULL;                    ListNode *node1=headA;        int length1=0;        while(node1!=NULL)        {            ++length1;            node1=node1->next;        }                ListNode *node2=headB;        int length2=0;        while(node2!=NULL)        {            ++length2;            node2=node2->next;        }                int diff=length1-length2;                if(diff<0)        {            node1=headA;            while(-diff)            {                headB=headB->next;                ++diff;            }            node2=headB;        }        else        {            node2=headB;            while(diff)            {                headA=headA->next;                --diff;            }            node1=headA;        }                while(node1&&node2)        {            if(node1==node2)                return node1;            node1=node1->next;            node2=node2->next;        }         return NULL;            }};

0 0
原创粉丝点击