由于问题与问题补充不一致,问题是要求交集,是找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;
}