void mergelist(list La,list Lb,list &Lc)
{
//已知线性表LA和LB中的数据元素按值非递减排列
//归并LA和LB得到新的线性表LC,LC中的元素也按值非递减
Initlist(Lc);//初始化一个新的链表LC
i=j=1;k=0;
La_len=ListLength(La);//分别求出La和Lb的长度
Lb_len=ListLength(Lb);//La和Lb都非空。
{
GetElem(La,i,ai);
GetElem(Lb,i,bj);
if(ai<=bj)//如果ai<bj,那么就让ai插入链表Lc中。
{
ListInsert(Lc,++k,ai);
i++;//让链表La中的下一个元素继续和Lb中的元素比较。
}
else
{
ListInsert(Lc,++k,bj);//如果ai>bj,那么就让bj插入到链表Lc中
j++;
}
}
while((i<=La_len)&&(j>Lb_len))//当最后链表La还有数值,而Lb没有数值的时候
{
GetElem(La,i++,ai);//让所有链表La的数值都插入到Lc链表中
ListInsert(Lc,k++,ai);
}
while((j<=Lb_len)&&(i>Lb_len))//当最后链表Lb还有数值,而La没有数值的时候
{
GetElem(La,j++,bj);
ListInsert(Lc,k++,bi);//让所有链表Lb的数值都插入到Lc链表中
}
}原文地址:http://blog.csdn.net/u012989536/article/details/43195619