首页 > 其他 > 详细

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

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

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

问题二:

 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 }

 

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!