LinkList *LinkMag(LinkList *ha, LinkList *hb)//假設ha和hb是帶頭結點的鏈表
{
Link *p, *q, *r,*hc,*aa;
hc->head = (Link*)malloc(sizeof(Link));
p = ha->next;
q = hb->next;
r = hc;
while(p!=NULL && q!=NULL)
{ aa = (Link*)malloc(sizeof(Link));
if(p->data<q->data)//如果是交集的話,沒有傳遞數據,只有指針移動,即只執行p=p->next;就可以了
{ aa->data = p->data;
p = p->next;
}
else//如果是交集的話,還要判斷等於的情況,只有等於的情況,才有傳遞數據,而大於的情況與小於情況類似,只有指針移動。
{ aa->data = q->data;
q = q->next;
}
r->next = aa;
r = aa;
}
while(p!=NULL)
{ aa = (Link*)malloc(sizeof(Link));
aa->data = p->data;
p = p->next;
r->next = aa;
r = aa;
}
while(q!=NULL)
{ aa = (Link*)malloc(sizeof(Link));
aa->data = q->data;
q = q->next;
r->next = aa;
r = aa;
}
r->next=NULL;
return hc;
}