判断两个链表是否相交

Posted When I See You Again

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断两个链表是否相交相关的知识,希望对你有一定的参考价值。

思路:

两个链表相交,尾节点必然相等

 

#include <stdio.h>
#include <stdlib.h>

struct list
{
    int element;
    struct list *next;
};

//
//问题:判断两个链表是否相交
//思路:若两个链表相交,则两个链表的尾节点必然相等
//
int func01(struct list *A , struct list *B)
{
    struct list *pa = A;
    struct list *pb = B;
    while(pa != nullptr)
    {
        pa = pa->next;
    }
    while(pb != nullptr)
    {
        pb = pb->next;
    }
    return (pa->element == pb->element);
}

//
//问题:判断链表是否有环
//思路:通过双指针判断,一前一后,前快后慢,若有环
//快的可以追上慢的
//
int func02(struct list *A)
{
    struct list *fast = nullptr;
    struct list *slow = nullptr;
    if(A->next == nullptr)
    {
        return 0;
    }
    fast = A->next->next;
    slow = A->next;
    while(fast != nullptr && slow != nullptr)
    {
        if(fast->element == slow->element)
        {
            return 1;
        }
        fast = fast->next;
        slow = slow->next;
    }
    return 0;
}

int main()
{
    printf("Hello world!\\n");
    return 0;
}

  

 

时间复杂度O(nlistA+nlistB)

以上是关于判断两个链表是否相交的主要内容,如果未能解决你的问题,请参考以下文章

1.11判断两个无环单链表是否相交

判断两个链表是否相交?若相交,求交点(假设链表带环)

判断两个单向链表是否相交

java判断两个单链表是否相交

判断两个链表是否相交

判断两条链表是否相交(公共部分)并找出相交处