两指针进行扫描,创建新表保存合集元素
void Union(LinkList &La,LinkList &Lb){
LNode *pa=La->next,*pb=Lb->next;//pa,pb指向第一个元素节点
LNode *u,*pc=La;//pc合并结点的前驱指针,pc现在指向La的头结点
while(pa&&pb){
if(pa->data==pb->data){
pc->next=pa;//将A中的结点链接到结果表中
pc=pa;
pa=pa->next;
u=pb;
pb=pb->next;
free(u);
}else if(pa->data<pb->data){
u=pa;
pa=pa->next;
free(u);
}else {
u=pb;
pb=pb->next;
free(u);
}
}
while(pa){
u=pa;
pa=pa->next;
free(u);
}
while(pb){
u=pb;
pb=pb->next;
free(u);
}
pc->next=NULL;
free(Lb);
return La;//返回合并后的链表
}
算法的时间复杂度为O(len1+len2),空间复杂度为O(1)