题目
给出2个单向链表h1和h2,判断这两个链表是否相交;
假设2个链表都不带环。
实现
思路:如果两个链表相交,则他们一定有着相同的尾节点,所以分别求出2个链表的尾节点,判断尾节点是否相同;
代码实现:
boolean isIntersect(Node h1,Node h2){
if(h1==null || h2==null)
return false;
Node tail_1=h1;
while(tail_1!=null){
tail_1=tail_1.next;
}
Node tail_2=h2;
while(tail_2!=null){
tail_2=tail_2.next;
}
if(tail_1==tail_2)
return true;
else
return false;
}
题目扩展
如果2个链表相交,如何找到相交的第一个节点?
实现
思路:
分别计算出2个链表的长度,len1和len2,(len1>len2);
对链表1先遍历(len1-len2)个节点;此时2个链表距离相交点的距离相同;
同时对2个链表进行遍历,直到遇到第一个相同节点;此节点即为所求;