一.算法思想
因A,B都有序,故可以从第一个元素开始依次比较A,B两个表中的元素。若值不等,则值小的指针往后移;若值相等,则创建一个与该值相等的结点,使用尾插法插入到新的链表中,并将两个原表往后移,直到其中一个链表遍历到表尾
二.源代码
void Get_Common(List A,List B){
/*pa,pb分别为A,B的工作结点;s,r分别为新创建的结点及C链的尾指针*/
Node pa,pb,s,r;
List C = new LNode;
r = C;
pa = A->next;
pb = B->next;
while(pa&&pb){
if(pa->data<pb->data) //A的当前元素值小,后移指针
pa = pa->next;
else if(pb->data<pa->data) //B的当前元素值小,后移指针
pb = pb->next;
else{ //找到公共结点
s = new LNode;
s->data = pa->data;
/*尾插法*/
r->next = s;
r = s;
/*继续向后扫描*/
pa = pa->next
pb = pb->next
}
}
r->next =NULL; //置C的结点指针为空
}