(3)判线性表是否为空表ListEmpty(L):若L为空表,则返回真,否则返回假(4)求线性表的长度ListLength(L):返回L中元素个数(5)输出线性表DispList(L):当线性表L不为空时,顺序显示L中各结点的值域。(6)求线性表L中指定位置的某个数据元素GetElem(L i, &e) :用e返回L中第i(1≤i<ListLength(L)个元素的值
6 (3)判线性表是否为空表ListEmpty(L): 若L为空表,则返回真,否则返回假。 (4)求线性表的长度 ListLength(L): 返回L中元素个数。 (5)输出线性表 DispList(L): 当线性表L不为空时,顺序显示L中各结点的 值域。 (6)求线性表L中指定位置的某个数据元素 GetElem(L,i,&e): 用e返回L中第i(1≤i≤ListLength(L))个元素的 值
(7)定位查找LocateElem(L,e):返回L中第1个值域与e相等的位序。若这样的元素不存在,则返回值为0。(8)插入数据元素ListInsert(&L,i,e):在L的第i(1≤i<ListLength(L)+1)个元素之前插入新的元素e,L的长度增1。(9)删除数据元素ListDelete(&L,i,&e):删除L的第i(1<i<ListLength(L)个元素,并用e返回其值,L的长度减1
7 (7)定位查找 LocateElem(L,e): 返回L中第1个值域与e相等的位序。若这样的 元素不存在,则返回值为0。 (8)插入数据元素 ListInsert(&L,i,e): 在L的第i(1≤i≤ListLength(L)+1)个元素之前插 入新的元素e,L的长度增1。 (9)删除数据元素 ListDelete(&L,i,&e): 删除L的第i(1≤i≤ListLength(L))个元素,并用e 返回其值,L的长度减1
例2.1假设有两个集合A和B分别用两个线性表LA和LB表示,即线性表中的数据元素即为集合中的成员。编写一个算法,求一个新的集合C=AUB,即将两个集合的并集放在线性表LC中。解:本算法思想是:先初始化线性表LC,将LA的所有元素复制到LC中,然后扫描线性表LB,若LB的当前元素不在线性表LA中则将其插入到LC中
8 例2.1 假设有两个集合 A 和 B 分别用两个 线性表LA和LB表示,即线性表中的数据元 素即为集合中的成员。编写一个算法,求一 个新的集合C=A∪B,即将两个集合的并集 放在线性表LC中。 解: 本算法思想是:先初始化线性表LC,将 LA的所有元素复制到LC中,然后扫描线性 表LB,若LB的当前元素不在线性表LA中, 则将其插入到LC中
void unionList (List LA, List LB, List &LC)int lena,lenc,i;ElemTypee;InitList(LC);for(i-1 ; i<=ListLength(LA) : i++)/*将LA的所有元素插入到Lc中*/GetElem(LA : i, e);ListInsert(LC , i, e);lena=ListLength(LA);/*求线性表的长度*lenb=ListLength(LB);
9 void unionList (List LA, List LB, List &LC) { int lena,lenc,i; ElemType e; InitList(LC); for(i=1;i<=ListLength(LA);i++) /*将LA的所有元素插入到Lc中*/ { GetElem(LA,i,e); ListInsert(LC,i,e); } lena=ListLength(LA); /*求线性表的长度*/ lenb=ListLength(LB);
for(i-l;i<-lenb;i++)YGetElem(LB,i, e);/*取LB中第i个数据元素赋给e*if (!LocateElem(LA e)ListInsert(LC , ++lena , e)/*LA中不存在和e相同者,则插入到LC中*10
10 for (i=1; i<=lenb; i++) { GetElem(LB,i,e); /*取LB中第i个数据元素赋给e*/ if (!LocateElem(LA,e)) ListInsert(LC,++lena,e); /*LA中不存在和e相同者,则插入到LC中*/ } }