算法2.1 ■ 例2-1利用两个线性表LA和LB分别表示两个集合 A和B,现要求一个新的集合A=AUB。 1.[初值] 获取线性表LA和LB 2.[合并线性表] 对于LB中的每一个元素做x如下操作: 若(x不属于LA)则将x插入到LA的末尾 3.[算法结束]
算法2.1 例2-1 利用两个线性表LA和LB分别表示两个集合 A和B,现要求一个新的集合A=A∪B。 1.[初值] 获取线性表LA和LB 2.[合并线性表] 对于LB中的每一个元素做x如下操作: 若 (x不属于LA) 则 将x插入到LA的末尾 3.[算法结束]
算法2.2 例2-2已知线性表LA和线性表LB中的数据 元素按值非递减有序排列,现要求将LA和 LB归并为一个新的线性表LC,且LC中的元 素仍按值非递减有序排列。 此问题的算法如下:
算法2.2 例2-2 巳知线性表LA和线性表LB中的数据 元素按值非递减有序排列,现要求将LA和 LB归并为一个新的线性表LC,且LC中的元 素仍按值非递减有序排列。 此问题的算法如下:
1.[初值] 获取线性表LA和LB,并构造空线性表LC 2.[选择插入元素] 对于线性表LA和LB,都从其第一个元素开始做如下操作直到其中一个线性表元素全 部遍历完毕: 若(LA的元素a<=LB的元素b) 则 将元素a插入到LC的末尾,并选择A中的下一个元素a 否则 将元素b插入到LC的末尾,并选择LB中的下一个元素b 3.[补充剩下的元素] 若(LA还有剩余元素)则将LA的剩余元素全部插入到LC末尾 若(LB还有剩余元素)则将LB的剩余元素全部插入到LC末尾 4.[算法结束]
1.[初值] 获取线性表LA和LB,并构造空线性表LC 2.[选择插入元素] 对于线性表LA和LB,都从其第一个元素开始做如下操作直到其中一个线性表元素全 部遍历完毕: 若 (LA的元素a<=LB的元素b) 则 将元素a插入到LC的末尾,并选择LA中的下一个元素a 否则 将元素b插入到LC的末尾,并选择LB中的下一个元素b 3.[补充剩下的元素] 若 (LA还有剩余元素) 则 将LA的剩余元素全部插入到LC末尾 若 (LB还有剩余元素) 则 将LB的剩余元素全部插入到LC末尾 4.[算法结束]
2.2线性表的顺序存储结构 ■2.2.1线性表 把线性表的结点按逻辑顺序依次存放在一组地 址连续的存储单元里。用这种方法存储的线性表 简称顺序表。 假设线性表的每个元素需占用个存储单元,并 以所占的第一个单元的存储地址作为数据元素的 存储位置。则线性表中第+1个数据元素的存储位 置LOC(a+)和第i个数据元素的存储位置LOC(a) 之间满足下列关系: LOC(a i+1)=LOC(a )+l 线性表的第i个数据元素a的存储位置为: LOC(aj)=LOC(a)+(i-1)*I
2.2 线性表的顺序存储结构 2.2.1 线性表 把线性表的结点按逻辑顺序依次存放在一组地 址连续的存储单元里。用这种方法存储的线性表 简称顺序表。 假设线性表的每个元素需占用l个存储单元,并 以所占的第一个单元的存储地址作为数据元素的 存储位置。则线性表中第I+1个数据元素的存储位 置LOC( a i+1)和第i个数据元素的存储位置LOC(ai ) 之间满足下列关系: LOC(a i+1)=LOC(a i )+l 线性表的第i个数据元素ai的存储位置为: LOC(ai )=LOC(a1 )+(i-1)*l
由于C语言中的一维数组也是采用顺序存储 表示,故可以用数组类型来描述顺序表。 又因为除了用数组来存储线性表的元素之 外,顺序表还应该用一个变量来表示线性 表的长度属性,所以我们用结构类型来定 义顺序表类型。 define ListSize 100 typedef int DataType; typedef strucf DataType data[ListSize]; int length; Sqlist;
由于C语言中的一维数组也是采用顺序存储 表示,故可以用数组类型来描述顺序表。 又因为除了用数组来存储线性表的元素之 外,顺序表还应该用一个变量来表示线性 表的长度属性,所以我们用结构类型来定 义顺序表类型。 # define ListSize 100 typedef int DataType; typedef struc{ DataType data[ListSize]; int length; } Sqlist;