2024年6月13日发(作者:)
∥算法2.1: 将所有在线性表Lb中但不在La中的数据元素插入到La中
void union(List &La, List Lb){
La_len=ListLength(La);
Lb_len=ListLength(Lb);
for(i=1;i<=Lb_len;i++){
GetElem(Lb,i,e);
if(!LocateElem(La,e,equal)) ListInsert(La,++La_len,e);
}
}∥union
∥算法2.2: 已知线性表La和Lb中的数据元素按值非递减排列。
∥归并La和Lb得到新的线性表Lc ,Lc的数据元素也接值非递减排列。
void MergeList(ListLa,List Lb, List &Lc){
InitList(Lc);
i=j=1; k=0;
La_len=ListLength(La); Lb_len=ListLengtb(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(j<=Lb_len){
GetElem(Lb,j++,bj); ListInsert(Lc,++k,bj);
}
}∥MergeList
∥算法 2.3:构造一个空的线性表L。
Status InitList_Sq(SqList &L){
=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!) exit(OVERFLOW);
=0;
ze=LIST_INIT_SIZE;
return oK;
}∥InitList_Sq
∥算法2.4:在顺序线性表L中第i个位置之前插入新的元素e,
∥i的合法值为1≤i≤ListLength_ Sq(L)+1
Status ListInsert_ Sq(SqList &L, int i, ElemType e){
if(i<1|| i>+1) return ERROR;
if (>=ze){
newbase= (ElemType *)realloc(, (ze+
LISTINCREMENT)* sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
=newbase;
ze+=LISTINCREMENT;
}
q=& ([i-l]);
for(p=&([-l]);p>=q;--p)
*(p+1)=*p;
*q=e;
++;
return OK;
}∥Listlnsert_ Sq
∥算法2.5:在顺序线性表L中删除第i个元素,并用e返回其值
∥i的合法值为1≤i≤ListLength_ Sq(L)
Status ListDelete_ Sq(SqList &L, int i,ElemType &e){
if((i<1)|(1> )) return ERROR;
p=&([i-l]);
e=*p;
q=+ -1;
for(++p;p<=q;++p) *(p一1)=*p;
--;
Return OK;
}//ListDelete_Sq
发布评论