扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。
时间复杂度:O(ListLength(LA)*ListLength(LB))
viod union(List &La,List Lb){
//将所有在线性表Lb中但不在La中的数据元素插入到La中。
La_len=ListLength(La); Lb_len=ListLength(Lb);//求线性表的长度
for(i=1;i<=Lb_len;i++){
GetElem(Lb,i,e); //取Lb中第i个数据元素赋给e
if(!LocateElem(La,e,equal)) ListInsert(La,++La_len,e);
//La中不存在和e相同的数据元素,则插入之
}
}//union
已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性LC,且LC中的数据元素仍按值非递减有序排列。
时间复杂度:O(ListLength(LA)+ListLength(LB))
void MergeList(List La,List Lb,List &Lc){
//已知线性表La和Lb中的数据元素按非值递减排列。
//归并La和Lb得到新的线性表Lc,Lc的数据元素也可按值非递减排列。
InitList(Lc);
i=j=1;k=0;
La_len=ListLength(La); Lb_len=ListLength(Lb);
while((i<=La_len)&&(j<=Lb_len)) {//La和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<=La_len) {
GetElem(La,++i,ai);ListInsert(Lc,++k,ai);
}
while(i<=Lb_len) {
GetElem(Lb,++j,bj);ListInsert(Lc,++k,bj);
}
参考文献:数据结构(C语言版) 严蔚敏 吴伟民 编著 清楚大学出版社