【day14】给定两个单链表,编写算法找出两个单链表的公共节点
【分析】:如果有公共结点,链表的形状一定是像Y型;
暴力法:算法思想:设置两个指针分别指向两个链表,A链表的指针暂且不动,遍历B链表,对比两个指针的next指针是否指向同一个结点,如果遍历完B都不比配,则A链表指针指向下一个对比结点,继续遍历B链表对比,直到找到公共结点为止;
LNode * search_commond(LinkList La,LinkList Lb){
LNode *p,*q;
p=La->next;
q=Lb->next;
while(p!=NULL){
//遍历A链表
while(q!=NULL){
//遍历B链表
if(p==q){
//判断当前指向的两个结点是否是公共结点
return p;
}
q=q->next;
}
p=p->next;
q=Lb->next; //重新让q指针指向LB的第一个结点
}
return NULL;
}
暴力法:时间复杂度O(La.lenghtLblenght)
【方法二】:求出La Lb表长之差,先让表长较长的一个先移动k位,使得他们能够