void purge(list &LA, List LB) ∥构造线性表LA,使其只包含LB中所有值不相同 的数据元素算法不改变线性表LB nit list(LA);∥创建一个空的线性表LA La len e 0: Lb len= ListLength(LB);∥求线性表LB的长 度素 for(=1;i<=Lb|en;i++)∥处理LB中每个元 Getelem(LB,i,e);∥取LB中第i个数据赋给e ∥当LA中没有和e值相同的数据元素时进行 插入 if LocateElem( LA, e, equal()) Listinsert LA, ++La len, e); }∥for ∥ purge
• void purge(List &LA, List LB) { // 构造线性表LA,使其只包含LB中所有值不相同 的数据元素,算法不改变线性表LB InitList(LA); // 创建一个空的线性表 LA La_len = 0; Lb_len = ListLength(LB); // 求线性表 LB 的长 度 for (i = 1; i <= Lb_len; i++)// 处理 LB 中每个元 素 { GetElem(LB, i, e); // 取LB中第 i 个数据赋给 e // 当 LA 中没有和 e 值相同的数据元素时进行 插入 if (!LocateElem( LA, e, equal( ) ) ListInsert( LA, ++La_len, e ); } // for } // purge
·例3判别两个集合是否相等。 分析:首先判别两者的表长是否相等;在表 长相等的前提下,对于一个表中的所有元 素,是否都能在另一个表中找到和它相等 的元素 如果"集合"中的元素不能保证都相异,还 应反过来判别LB中每个元素都能在LA中 找到相同者
• 例3 判别两个集合是否相等。 • 分析:首先判别两者的表长是否相等;在表 长相等的前提下,对于一个表中的所有元 素,是否都能在另一个表中找到和它相等 的元素 . • 如果"集合"中的元素不能保证都相异,还 应反过来判别 LB 中每个元素都能在 LA 中 找到相同者
2.2线性表的顺序存储结构 线性表的顺序存储结构是存储地址内存单元 指用一组连续的存储单元 依次存储线性表中的每个 数据元素。 ·L为每个数据元素所占据的 d+L d+2L aaa 存储单元数目。 位置的计算公式为: d+(i-1)L Loc(a+=LOC(a+ d+(n-IL
2.2 线性表的顺序存储结构 • 线性表的顺序存储结构是 指用一组连续的存储单元 依次存储线性表中的每个 数据元素。 • L为每个数据元素所占据的 存储单元数目。 • 位置的计算公式为: LOC(ai+1)=LOC(a1 )+(i- 1)*L 存储地址 内存单元 ... d a1 d+L a2 d+2L a3 ... d+(i-1)L ai ... d+(n-1)L an ...
顺序存储结构的特点 (1)利用数据元素的存储位置表示线性表 中相邻数据元素之间的前后关系,即线性 表的逻辑结构与存储结构(物理结构) 致 (2)在访问线性表时,可以利用上述给出 的数学公式,快速地计算出任何一个数据 元素的存储地址
顺序存储结构的特点 • (1)利用数据元素的存储位置表示线性表 中相邻数据元素之间的前后关系,即线性 表的逻辑结构与存储结构(物理结构)一 致 • (2)在访问线性表时,可以利用上述给出 的数学公式,快速地计算出任何一个数据 元素的存储地址
define list maX length 100 线性表的最大长度 typedef struct EntryType *item;∥指向存放线性表 中数据元素的基地 int length ∥线性表的当前长度 JSQ_ LIST;
• #define LIST_MAX_LENGTH 100 // 线性表的最大长度 • typedef struct { EntryType *item; //指向存放线性表 中数据元素的基地 int length; //线性表的当前长度 }SQ_LIST;