数据结构-相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

数据结构-相交链表_第1张图片

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    
    struct ListNode* list1=headA;
    struct ListNode* list2=headB;
    int len1=1;
    int len2=1;
    while(list1->next)
    {
        ++len1;
        list1=list1->next;
    }
    while(list2->next)
    {
        ++len2;
        list2=list2->next;
    }
        if(list1!=list2)
        return NULL;
    int k=abs(len1-len2);


    struct ListNode* longlist=headA;
    struct ListNode* shortlist=headB;
    if(len1next;
    }
    while(longlist!=shortlist)
    {
        longlist=longlist->next;
        shortlist=shortlist->next;
    }

    return longlist;
}

你可能感兴趣的:(数据结构,链表)