算法思想:这个题目我没有做测试,写一下大概思路,就是让长的链表先走长的那几步,等到两个链表一般长的时候就一起走找到相同的结点
//获取链表长度
int getLength(LNode *p){
int i=0;
while(p->next!=NULL) i++;
return i;
}
LinkList Search_1st_Common(LNode *p,LNode *q){
if(p->next==NULL||q->next==NULL)
return NULL;
int pl=getLength(p);
int ql=getLength(q);
LNode *longlist,*shortlist;
int step;
if(pl>ql){
longlist=p->next;
shortlist=q->next;
step=pl-ql;
}else{
longlist=q->next;
shortlist=p->next;
step=ql-pl;
}
while(step--){
longlist=longlist->next;
}
while(longlist!=NULL&&longlist!=shortlist){
longlist=longlist->next;
shortlist=shortlist->next;
}
return longlist;
}