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

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

时间:2017-06-06 14:25:02      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:...   i++   return   遍历   com   ext   链表   logs   说明   

题目

  输入两个链表,找出它们的第一个公共结点。

 

分析

  首先分别遍历list1和list2,得到两个链表的长度count1和count2,同时,判断两个链表的尾指针是否相同,如果不同,说明两个链表不存在公共结点;如果相同,则继续......。比较count1和count2,如果count1>count2,让指针n1向前移动count1-count2;否则让指针n2向前移动count2-count1。最后,两个指针同时向前移动,直到两个指针指向的结点相同,并返回。

 

代码

 1   public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2){
 2         int count1 = 0, count2 = 0;
 3         ListNode node1 = pHead1, node2 = pHead2;
 4         while(node1!=null){
 5             count1++;
 6             node1 = node1.next;
 7         }
 8         while(node2!=null){
 9             count2++;
10             node2 = node2.next;
11         }
12         if(node1!=node2)
13             return null;
14         ListNode n1 = pHead1, n2 = pHead2;
15         if(count1>count2){
16             for(int i=0;i<count1-count2;i++){
17                 n1 = n1.next;
18             }
19         }
20         else{
21             for(int i=0;i<count2-count1;i++){
22                 n2 = n2.next;
23             }
24         }
25         while(n1!=n2){
26             n1 = n1.next;
27             n2 = n2.next;
28         }
29         return n1;
30     }

 

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

标签:...   i++   return   遍历   com   ext   链表   logs   说明   

原文地址:http://www.cnblogs.com/jiqianqian/p/6951060.html

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