模拟:相交链表
问题:
思路:
将长链表移动使两个链表的剩余长度相同,对两链表中剩余的每个对应结点判断结点是否相同
代码:
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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153877.html