作业帮 > 数学 > 作业

已知两个顺序表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/24 15:58:42
已知两个顺序表A和B分别表示两个集合,其元素递增排列,编写一个函数求出A和B的交集
要用简单的c++写啊,刚学不太会啊
已知两个整数集合A和B,它们的元素分别依元素值递增有序存放在两个单链表HA和HB中,编写一个函数求出这两个集合的并集C,并要求集合C的链表的结点仍依元素值递增有序存放。(提示:求并集不是归并!)
由于问题与问题补充不一致,问题是要求交集,是找A和B的相同元素,问题补充里是求并集,强调不是归并,我按并集写的,如果是交集再稍加修改就可以了.
LinkList *LinkMag(LinkList *ha, LinkList *hb)//假设ha和hb是带头结点的链表
{
\x09Link *p, *q, *r,*hc,*aa;
\x09hc->head = (Link*)malloc(sizeof(Link));
\x09p = ha->next;
\x09q = hb->next;
\x09r = hc;
\x09while(p!=NULL && q!=NULL)
\x09{\x09aa = (Link*)malloc(sizeof(Link));
\x09\x09if(p->datadata)//如果是交集的话,没有传递数据,只有指针移动,即只执行p=p->next;就可以了
\x09\x09{\x09aa->data = p->data;
\x09\x09\x09p = p->next;
\x09\x09}
\x09\x09else//如果是交集的话,还要判断等于的情况,只有等于的情况,才有传递数据,而大于的情况与小于情况类似,只有指针移动.
\x09\x09{\x09aa->data = q->data;
\x09\x09\x09q = q->next;
\x09\x09}
\x09\x09r->next = aa;
\x09\x09r = aa;
\x09}
\x09while(p!=NULL)
\x09{\x09aa = (Link*)malloc(sizeof(Link));
\x09\x09aa->data = p->data;
\x09\x09p = p->next;
\x09\x09r->next = aa;
\x09\x09r = aa;
\x09\x09}
\x09while(q!=NULL)
\x09{\x09aa = (Link*)malloc(sizeof(Link));
\x09\x09aa->data = q->data;
\x09\x09q = q->next;
\x09\x09r->next = aa;
\x09\x09r = aa;
\x09\x09}
r->next=NULL;
return hc;
}