模拟:相交链表
问题:
思路:
将长链表移动使两个链表的剩余长度相同,对两链表中剩余的每个对应结点判断结点是否相同
代码:
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;
}