题目:
编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
在节点 c1 开始相交。
思路:
设置2个指针p,q,p指向A链表的headA结点,q指向B链表的headB结点,开始遍历,p移动1步,q移动1步,p为空时,令p= headB;q为空时,令q=headA,这样,当p==q时,返回true,否则返回false。
参考代码:
public ListNode getIntersectionNode(ListNode headA, ListNode headB){
if(headA == null ||headB == null)return null;
ListNode p = headA;
ListNode q = headB;
while(p != q){
p = p==null?headB:p.next;
q = q==null?headA:q.next;
}
if(p == null)return null;
return p;
}