两个链表的第一个公共结点

    ListNode* FindFirstCommonNode( ListNode* head1, ListNode* head2) {
        int Length1 = GetLength(head1);
        int Length2 = GetLength(head2);
        int LengthDif = Length1 - Length2;
        ListNode* pLongListHead = head1;
        ListNode* pShortListHead = head2;
         
        if (Length1 < Length2)
        {
            LengthDif = Length2 -Length1;
            pLongListHead = head2;
            pShortListHead = head1;
        }
         
        for(int i = 0; i<LengthDif ;i++)
        {
            pLongListHead = pLongListHead->next;
        }
         
        while(pLongListHead != NULL && pShortListHead != NULL && pLongListHead != pShortListHead)
        {
            pLongListHead = pLongListHead->next;
            pShortListHead = pShortListHead->next;
        }
         
        return pLongListHead;
    }
     
    int GetLength(ListNode* head){//获取链表的长度
        int length = 0;
        while(head != NULL)
        {
            length++;
            head = head->next;
        }
        return length;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容