/**
*两个单链表有交点,用尽量高的效率查找到第一个交点
*/
#include <cmath>
struct node
{
node* next;
};
int get_length(node* head)
{
int sum=0;
while(head)
{
++sum;
head=head->next;
}
return sum;
}
node* find_common_node(node* left,node* right)
{
if(left==nullptr || right=nullptr)
return nullptr;
int sum_left=get_length(left);
int sum_right=get_length(right);
/*int sub=abs(sum_left-sum_right);
int sig=sum_left>sum_right?1:2;
des_node=sig==1?left:right;
while(sub)
{
des_node=dec_node->next;
}*/
while(sum_left>sum_right)
{
left=left->next;
--sum_left;
}
while(sum_right>sum_left)
{
right=right->next;
--sum_right;
}
while(left!=right)
{
left=left->next;
right=right->next;
}
return left;
}
两个单链表,存在交点,求交点
最新推荐文章于 2022-09-25 19:55:26 发布