ListInsert( &L, i, e)加工型操作初始条件:线性表ListLength (L) +1操作结果:在L的第i个元素之前插入新的元素e,L的长度增1。ListDelete(&L,i,&e)初始条件:线性表L已存在且非空,1<ListLength (L)操作结果:删除L的第i个元素,并用e返回其值,L的长度减1。? ADTList
ListInsert( &L, i, e ) 初始条件:线性表 L 已 存 在 , 1≤i≤ ListLength (L) +1 操作结果:在L的第i个元素之前插入新的 元素e,L的长度增1。 ListDelete(&L, i, &e) 初始条件:线性表L已存在且非空,1≤i≤ ListLength (L) 操作结果:删除L的第i个元素,并用e 返 回其值,L的长度减1。 } ADT List 加工型操作
利用上述定义的线性表可以实现其它更复杂的操作★例2-1假设:有两个集合A和B分别用两个线性表LA和LB表示,即:线性表中的数据元素即为集合中的成员现要求一个新的集合A=AUB
例2-1 假设:有两个集合A 和 B 分别用两个 线性表 LA 和 LB 表示,即:线性表中 的数据元素即为集合中的成员。 现要求一个新的集合A=A∪B。 利用上述定义的线性表可以实现其 它更复杂的操作
算法思想:要求对线性表作如下操作:扩大线性表LA,将存在于线性表LA中的LB中而不存在于线性表数据元素插入到线性表LA中去
要求对线性表作如下操作:扩 大线性表 LA,将存在于线性表 LB 中而不存在于线性表 LA 中的 数据元素插入到线性表 LA 中去。 算法思想:
实现步骤:1·从线性表LB中依次察看每个数据元素GetElem(LB,i,e)2.依值在线性表LA中进行查访LocateElem(LA,e,equal(O)3.若不存在,则插入之ListInsert(LA, n+l, e)
实现步骤: 1.从线性表LB中依次察看每个数据元素; 2.依值在线性表LA中进行查访; 3.若不存在,则插入之。 GetElem(LB, i ,e ) LocateElem(LA, e, equal( )) ListInsert(LA, n+1, e)
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);//取Lb中第i个数据元素赋给eif (!LocateElem(La, e, equalO) )ListInsert(La, ++La len, e)://La中不存在和e相同的数据元素,则插入之O(ListLength(LA)xListLength(LB)} // union
GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if (!LocateElem(La, e, equal( )) ) ListInsert(La, ++La_len, e); // La中不存在和 e 相同的数据元素,则插入之 void union(List &La, List Lb) { La_len = ListLength(La); // 求线性表的长度 Lb_len = ListLength(Lb); for (i = 1; i <= Lb_len; i++) { } } // union O(ListLength(LA)×ListLength(LB)) ;