例如:
LA = (3,5, 8,11) ,LB = (2,6,8,9,11,15,20)
LC = (2,3,5,6,8,8,9,11,11,15,20,)
LC中的数据元素或是LA中的数据元素,或是LB中的数据元素,则只要先设LC为空表,然后将LA或LB中的元素逐个插入到LC中即可。为使LC中元素按值非递减有序排列,可设俩个指针i和j分别指向LA和LB某个元素,若设i当前所指的元素为a,j当前所指的元素为b,则当前应插入到LC中的元素c为,当a<=b 时,c = a;当a>b时,c= b;显然,指针i和j的初值均为1,在所指元素插入LC之后,LA或LB中顺序后移。
void MergeList(List La, List Lb, List &Lc)
{
InitList(Lc);
i = j = 1;
k = 0;
len_la = listlength(la);
len_lb = listlength(lb);
while((i<=len_la)&&(j<=len_lb))
{
GetElem(La, i, ai);
GetElem(Lb, j, bj);
if(ai <= bj)
{
ListInsert(Lc, ++k, ai);
++i;
}
else
{
ListInsert(Lc, ++k, bj);
++j;
}
}
while(i<=len_la)
{
GetElem(La, i++, ai);
ListInsert(Lc, ++k, ai);
}
while(j<=llen_lb)
{
GetElem(Lb, j++, bj);
ListInsert(Lc, ++k, bj);
}
}