单链表定义:
typedef int Elementype;
typedef struct{
Elementype data;
LNode *next;
}LNode,*LinkList;
- 方法一:时间复杂度为O(n^2)的暴力算法
LNode* Common(LinkList L1,LinkList L2){
if(L1->next==NULL||L2->next==NULL){
return 0;
}//判空if
LNode *p=L1->next,*q=L2->next;
while(p!=NULL){
while(q!=NULL){
if(p=q){
break;
}//if
q=q->next;
}//内部while
q=L2->next;
p=p->next;
}//外部while
if(p==NULL){
return 0;
}else{
return p;
}//函数
- 方法二:时间复杂度为O(n),长的单链表先走一个差值
//获取单链表长度 int Length(LinkList L){ int sum=0; LNode *p=L->next; while(p!=NULL){ sum++; p=p->next; } return sum; } //寻找公共结点 LNode Common(LinkList L1,LinkList L2){ if(Length(L1)>Length(L2)){ LNode *p=L1->next,*q=L2->next; }else{ LNode *p=L2->next,*q=L1->next; } int l=Length(L1)-Length(L2); if(l<0){ l=-l;} while(l!=1){ p=p->next; l--; } while(p!=NULL){ if(p=q){ break; } p=p->next; q=q->next; }//while if(p==NULL){ return 0; }else{ return p; }//if }