美文网首页
找到两个链表的第一个公共节点

找到两个链表的第一个公共节点

作者: 小码弟 | 来源:发表于2018-10-12 10:25 被阅读0次

如题

如果两个链表存在公共节点,那么从公共节点往后应该都是重合的,因此两条链表呈‘Y’型,

Snip20181011_2.png
ListNode findFirstCommonNode(LinkList head1, LinkList head2)
{
  int len1 = 0, len2=0, diff=0;
  LinkNode* p = head1, *q = head2;
  while(p){len1++; p=p->next;}
  while(q){len2++; q=q->next;}
  
  diff = abs(len1 - len2);
  if(len1 > len2)
  {
    p=head1;
    q=head2;
  }
  else
  {
  p=head2;
  q=head1;
  }
  
  while(diff)
  {
    p=p->next;
    diff--;
  }
  
  while(p)
   {
    if(p==q)return p;
    p=p->next;
    q=q->next;
  }
return NULL;
}

相关文章

网友评论

      本文标题:找到两个链表的第一个公共节点

      本文链接:https://www.haomeiwen.com/subject/ggkiaftx.html