題目:Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2
↘
c1 → c2 → c3
↗
B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
null.
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(headA==NULL ||headB==NULL)
return NULL;
int lenHeadA=0,lenHeadB=0;
ListNode *p=headA,*q=headB;
//求鏈表headA和headB的長度
while(p){
p=p->next;
lenHeadA++;
}
p=headA;
while(q){
q=q->next;
lenHeadB++;
}
q=headB;
int distance=0;
if(lenHeadA>lenHeadB){
distance=lenHeadA-lenHeadB;
for(int i=0;inext;
}
if(lenHeadAnext;
}
//循環結束的條件是p==q!=null(有相交點)
//或者是p==q==null(無相交點)
while(p!=q){
p=p->next;
q=q->next;
}
return p;
};