题目描述:给定两个单链表,找出其公共结点。
分析: 分别遍历两个单链表得到他们的长度,并求出两个长度之差。在长的链表上先遍历长度之差个结点之后,再同步遍历两个链表,直到找到相同的结点,或者一直到链表结束。
LinkList Search(LinkList L1,LinkList L2){
int dist;
int len1 = length(L1),len2 = length[L2];
LinkList longlist,shortlist;
if(len1 > len2){
longlist = L1->next;
shortlist = L2->next;
dist = len1 - len2;
}
else{
longlist = L2->next;
shortlist = L1->next;
dist = len2 - len1;
}
while(dist--)
longlist = longlist->next;
while(longlist){
if(longlist == shortlist)
return longlist;
else{
longlist = longlist->next;
shortlist = shortlist->next;
}
}
return NULL;
}