getelem(la, I, ai); getelem(lb,j, bj) o if(ai<=bj)(listinsert(Ic,++k, ai); ++I; 3 else listinsert(lc, ++k, bi): ++1; i while(=la-len& getelem ((la, I++, ai); listinsert(lc k, ai) while(j<=lb-len getelem((b, j++, bi); 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个数据元素 的存储位置LOC(a1)和第个数据元素的存储 位置LOC(ar)之间满足下列关系: LOC(a i+1=loc(a i+l 线性表的第个数据元素a的存储位置为: LOC(a)=LOC(a1)+(-1)*1
⚫ 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 dataListsize int length i Sqlist
⚫ 由于C语言中的一维数组也是采用顺序存储 表示,故可以用数组类型来描述顺序表。 又因为除了用数组来存储线性表的元素之 外,顺序表还应该用一个变量来表示线性 表的长度属性,所以我们用结构类型来定 义顺序表类型。 ⚫ # define ListSize 100 ⚫ typedef int DataType; ⚫ typedef struc{ ⚫ DataType data[ListSize]; ⚫ int length; ⚫ } Sqlist;
●222顺序表上实现的基本操作 在顺序表存储结构中,很容易实现线 性表的一些操作,如线性表的构造、第i 个元素的访问。 注意:C语言中的数组下标从“03开始, 因此,若L是Sqis类型的顺序表,则表 中第个元素是.data[-] 以下主要讨论线性表的插入和删除 两种运算。 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 ai-1, X,ai, a) 算法2.3 o Void Insertlist(sqlist L, Data Type x, int ●if(I<1‖l> 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