getelem(la, I, ai); getelem(lb, j, bj) if(aK<=bjflistinsert(lc, ++k, ai); ++l; elseflistinsert(Ic, ++k, bj); ++; 3 while(=la-len) x getelem((la, I++, ai); listinsert(lc k, ai) while(<=lb-leni getelem((b,j++, b), listinsert(lc ++k,bi);
⚫ 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,bi); }
22线性表的顺序存储结构 221线性表 把线性表的结点按逻辑顺序依次存放在一组 地址连续的存储单元里。用这种方法存储的线 性表简称顺序表。 假设线性表的每个元素需占用1个存储单元, 并以所占的第一个单元的存储地址作为数据元 素的存储位置。则线性表中第H+1个数据元素 的存储位置IOC(a1)和第诠个数据元素的存储 位置LOC(a1)之间满足下列关系: LOC(a i+D-LOC(a i+I 线性表的第个数据元素a的存储位置为: LOC(ai=LoC(a1)+(I-1)*I
⚫ 2.2 线性表的顺序存储结构 ⚫ 2.2.1 线性表 把线性表的结点按逻辑顺序依次存放在一组 地址连续的存储单元里。用这种方法存储的线 性表简称顺序表。 假设线性表的每个元素需占用l个存储单元, 并以所占的第一个单元的存储地址作为数据元 素的存储位置。则线性表中第I+1个数据元素 的存储位置LOC( a i+1)和第i个数据元素的存储 位置LOC(a I )之间满足下列关系: LOC(a i+1)=LOC(a i )+l 线性表的第i个数据元素ai的存储位置为: LOC(ai )=LOC(a1 )+(I-1)*l
由于C语言中的一维数组也是采用顺序存储 表示,故可以用数组类型来描述顺序表。 又因为除了用数组来存储线性表的元素之 外,顺序表还应该用一个变量来表示线性 表的长度属性,所以我们用结构类型来定 义顺序表类型。 t define listsize 100 typedef int Data Type typedef struc( Data Type data Listsize It length S q list
⚫ 由于C语言中的一维数组也是采用顺序存储 表示,故可以用数组类型来描述顺序表。 又因为除了用数组来存储线性表的元素之 外,顺序表还应该用一个变量来表示线性 表的长度属性,所以我们用结构类型来定 义顺序表类型。 ⚫ # define ListSize 100 ⚫ typedef int DataType; ⚫ typedef struc{ ⚫ DataType data[ListSize]; ⚫ int length; ⚫ } Sqlist;
222顺序表上实现的基本操作 在顺序表存储结构中,很容易实现线 性表的一些操作,如线性表的构造、第i 个元素的访问。 注意:C语言中的数组下标从“03开始 因此,若L是 Sqlite类型的顺序表,则表 中第个元素是data-1l 以下主要讨论线性表的插入和删除 两种运算。 1、插入 线性表的插入运算是指在表的第 1≤in+1个位置 插入一个新结占
⚫ 2.2.2 顺序表上实现的基本操作 在顺序表存储结构中,很容易实现线 性表的一些操作,如线性表的构造、第i 个元素的访问。 注意:C语言中的数组下标从“0”开始, 因此,若L是Sqlist类型的顺序表,则表 中第i个元素是l.data[I-1]。 以下主要讨论线性表的插入和删除 两种运算。 1、插入 线性表的插入运算是指在表的第 I(1≦i≦n+1个位置上,插入一个新结点x
使长度为n的线性表 (a a a 变成长度为n+1的线性表 a Void Insertlist(sqlist L, Data Type x, int f(I<1‖I> 1. length+1) printf( Position error)
使长度为n的线性表 (a1,…a i-1,ai,…,an ) 变成长度为n+1的线性表 (a1,…a i-1,x,ai,…,an ) 算法2.3 ⚫ Void InsertList(Sqlist*L,DataType x,int I) ⚫ { ⚫ int j; ⚫ if(I<1 || I>l.length+1) ⚫ printf(“Position error”); ⚫ return ERROR