码迷,mamicode.com
首页 > 其他好文 > 详细

两个链表的第一个公共结点

时间:2015-11-04 22:50:13      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

输入两个链表,找出它们的第一个公共结点。
首先遍历俩个链表得到它们的长度,以及长的链表多几个结点。在第二次遍历的时候,在较长的链表先走长度之差步,接着再同时在俩个链表遍历,找到的第一个相同的结点就是她们的第一个公共结点
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    int length(ListNode *head){
        ListNode *p=head;
        int l=0;
        while(p!=NULL)
            {
             p=p->next;
             l++;
        }
        return l;
    }
  ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {
        int len1=length(pHead1);
         int len2=length(pHead2);
      int d;
      ListNode *p=pHead1;
       ListNode *q=pHead2;
       if(len1>len2){
            d=len1-len2;
           while(d--)
                p=p->next;
       }
       else{
           d=len2-len1;
           while(d--)
               q=q->next;
          
       }
      while(p!=q&&p!=NULL&&q!=NULL){
          p=p->next;
          q=q->next;
      }
       ListNode *head=p;
       return head;
       
    }
    
};

 

 

两个链表的第一个公共结点

标签:

原文地址:http://www.cnblogs.com/cancangood/p/4937397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!