相交連結清單
問題:
思路:
将長連結清單移動使兩個連結清單的剩餘長度相同,對兩連結清單中剩餘的每個對應結點判斷結點是否相同
代碼:
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
if( headA==NULL||headB==NULL )
return NULL;
struct ListNode *p1,*p2;
p1=headA;
p2=headB;
int count1,count2,flag;
count1=1;
count2=1;
while( p1->next )
{
count1++;
p1=p1->next;
}
while( p2->next )
{
count2++;
p2=p2->next;
}
flag= abs( count1-count2 );
if( count1>=count2 )
for( p1=headA,p2=headB;flag>=1;flag-- )
p1=p1->next;
else
for( p1=headA,p2=headB;flag>=1;flag-- )
p2=p2->next;
while( p1&&p2 )
{
if( p1==p2 )
return p1;
else
{
p1=p1->next;
p2=p2->next;
}
}
return NULL;
}