//求两个有序集合的交
void InterSect(LinkNode * ha,LinkNode *hb,LinkNode *&hc){
//ha:链表1,hb:链表2,hc:返回新链表交集
LinkNode *a=ha->next,*b=hb->next,*p,*q; //指针a指向ha第一个结点
ha->next=NULL; //ha做新链表的头结点
p=ha;
//循环遍历ha
while(a!=NULL && b!=NULL){
if(a->data > b->data){ //如果a>b,b向后移一位,a不动
b=b->next;
}else if(a->data == b->data){ //如果a=b,将a尾插法插入新链表中,b向后移一位
q=a->next; //q保存a的下一个结点
a->next = NULL;
p->next = a;
p=a; //p指向尾结点
a=q;
b=b->next;
}else{ //如果a<b,a向后移一位,b不动
a=a->next; //a向后遍历
}
}
hc=ha;
}
求两个有序链表的交集
最新推荐文章于 2022-07-05 10:57:07 发布