求两个有序单链表的并集(La∪Lb)
List Union(List La, List Lb)
{
List resultList;
Position pa, pb, pResult;
assert(La != NULL && Lb != NULL);
pa = La->Next;
pb = Lb->Next;
InitList(&resultList);
pResult = resultList;
while(pa && pb)
{
if(pa->Data < pb->Data)
{
InsertAfter(pa->Data, pResult);
pa = pa->Next;
pResult = pResult->Next;
}
else if(pa->Data > pb->Data)
{
InsertAfter(pb->Data, pResult);
pb = pb->Next;
pResult = pResult->Next;
}
else
{
InsertAfter(pa->Data, pResult);
pa = pa->Next;
pb = pb->Next;
pResult = pResult->Next;
}
}
while(pa)
{
InsertAfter(pa->Data, pResult);
pa = pa->Next;
pResult = pResult->Next;
}
while(pb)
{
InsertAfter(pb->Data, pResult);
pb = pb->Next;
pResult = pResult->Next;
}
return resultList;
}
求有序单链表的交集(La∩Lb)
List Intersect(List La, List Lb)
{
List resultList;
Position pLa, pLb, pResult;
assert(La != NULL && Lb != NULL);
pLa = La->Next;
pLb = Lb->Next;
InitList(&resultList);
pResult = resultList;
while(pLa && pLb)
{
if(pLa->Data < pLb->Data)
pLa = pLa->Next;
else if(pLa->Data > pLb->Data)
pLb = pLb->Next;
else
{
pLa = pLa->Next;
InsertAfter(pLb->Data, pResult);
pLb = pLb->Next;
pResult = pResult->Next;
}
}
return resultList;
}