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