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