首页 > 代码库 > 10.两个单链表相交,计算相交点

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.两个单链表相交,计算相交点