10.两个单链表相交,计算相交点

Posted

tags:

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

10.两个单链表相交,计算相交点

思路1:

         分别遍历两个单链表,计算出它们的长度M和N,假设M比N大,则长度M的链表先前进M-N,然后两个链表同时以步长1前进,前进的同时比较当前的元素,如果相同,则必是交点。
Node* getIntersectPoint(Node* Head1,Node* Head2)

 

//两链表相交,计算相交点
Node* getIntersectPoint(Node* Head1,Node* Head2)
{
     int len1=numOfNodes(Head1);
     int len2=numOfNodes(Head2);
     int initMove=abs(len1-len2);
     Node* p1=Head1;
     Node* p2=Head2;
     if(len1>len2)
     {
          for(int i=0; i<initMove; i++)
               p1=p1->next;
     }
     else
     {
          for(int i=0; i<initMove; i++)
               p2=p2->next;
     }
     while(p1!=NULL && p2!=NULL)
     {
          if(p1==p2)
          {
               return p1;
          }
          p1=p1->next;
          p2=p2->next;
     }
     return NULL;
}

  

思路2:

         将指针p1,p2定位到两个链表的尾部,然后同时将两个指针前移(不可以,因为是单向链表)

 

以上是关于10.两个单链表相交,计算相交点的主要内容,如果未能解决你的问题,请参考以下文章

判断两个单链表是否相交及相交的第一个节点

判断两个单链表是否相交?若相交求交点

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

9.判断两个单链表是否相交

Leetcode刷题100天—160. 相交链表(哈希表)—day10

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