给定两个链表,找出两个链表相交的起始交点
思路:首先求出两个链表的长度,再求出它们的长度差,然后让较长的链表走差值步,然后再让它们一起走,如果它们相遇且不为null,代表此时就是它们的起始交点。
public static Nodee Findpublic(Nodee headA,Nodee headB) {//这是针对两个单链表,所以把方法写在这里比较合适,链表类针对的是一个单链表
Nodee ps = headA;//定义一个ps来指向短的单链表
Nodee pl = headB;//定义一个pl指向长的单链表
int lenA = 0;
int lenB = 0;
while(ps!=null) {//先求链表A的长度
ps = ps.next;
lenA++;
}
while(pl!=null) {//再求链表B的长度
pl = pl.next;
lenB++;
}
pl = headB;//因为上面的循环执行完之后ps和pl都已经为null了,所以要重新定义回来
ps = headA;
int len = lenB - lenA;//计算这两个链表的长度差
if(len<0) {//说明链表B比链表A要短
ps = headB;//让ps重新指向B
pl = headA;//让p重新指向A
len = lenA-lenB;//重新计算差值
}
//此时pl一定指向的是最长的单链表。
f