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

判断两个链表是否相交;查找两个链表的第一个公共节点

时间:2014-09-16 15:46:40      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   div   sp   问题   log   on   c   

问题一:(引用编程之美)如果两个链表相交,则尾节点一定是公共的

问题二:

 1 int listLength(node* list){
 2     int length=0;
 3     while(list!=NULL){
 4         length++;
 5         list=list->next;
 6     }
 7     return length;
 8 }
 9 //
10 node* firstComNode(node* list1,node* list2){
11     int n1=listLength(list1);
12     int n2=listLength(list2);
13     //定义指针pLong,pShort,分别指向长列表和短列表
14     node* pLong=list1;
15     node* pShort=list2;
16     if(n1<n2){
17         pLong=list2;
18         pShort=list1;
19     }
20     //将指向长列表的指针前移一定距离d
21     int d=((n1-n2)>0)?(n1-n2):(n2-n1);
22     while(d--){
23         pLong=pLong->next;    
24     }
25     //两个指针同时向尾部遍历,查找第一个相同的节点
26     while(pLong!=NULL && pLong!=pShort){
27         pLong=pLong->next;
28         pShort=pShort->next;
29     }
30     return pLong;
31 }

 

判断两个链表是否相交;查找两个链表的第一个公共节点

标签:style   blog   color   div   sp   问题   log   on   c   

原文地址:http://www.cnblogs.com/liuzhiminxd/p/3974971.html

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