2.1线性表及其逻辑结构 例22求两个集合的并,即C=AUB void union list(list LA, List LB, List &lc) 将LA和LB中的元素归并到LC中 int lena, Ienb, i; Elem Type e; InitList(LC); for(i=l; K<=ListLength (LA);i++) 将LA的所有元素插入到Lc中* GetElem ( La,i, e); ListInsert(lC, i, e) lena= Listlength(LA);/求线性表的长度* lenb=listlength (lB) 11
11 2.1线性表及其逻辑结构 例2.2 求两个集合的并,即C=A∪B void unionList(List LA,List LB,List &LC) {/*将LA和LB中的元素归并到LC中*/ int lena, lenb,i; ElemType e; InitList(LC); for (i=1;i<=ListLength(LA);i++) /*将LA的所有元素插入到Lc中*/ { GetElem(LA,i,e); ListInsert(LC,i,e); } lena=ListLength(LA); /*求线性表的长度*/ lenb=ListLength(LB);
2.1线性表及其逻辑结构 例22求两个集合的并,即C=AUB for〔i=l;<=lenb;i++) GetElem(LB,i, e); 取LB中第个数据元素赋绐e*/ if (LocateElem(LA, e)) ListInsert(LC, ++lena, e); /LA中不存在和e相同者则插入到LC中 12
12 2.1线性表及其逻辑结构 例2.2 求两个集合的并,即C=A∪B for (i=1;i<=lenb;i++) { GetElem(LB,i,e); /*取LB中第i个数据元素赋给e*/ if (!LocateElem(LA, e)) ListInsert(LC, ++lena, e); /*LA中不存在和e相同者,则插入到LC中*/ } }
22线性表的顺序存储结构 2.2.1顺序存储结构 把线性表中的所有元素按照其逻辑顺序依次存储 到从计算机存储器中指定存储位置开始的一块连续 的存储空间中。 假设首元素a1的存放地址为LOC(a1)(称为首地址 线性表每个元素占用k(k= sizeof( ElemType)个存储单元 ,则第个元素a的存储位置为:LoC(a1)=LOC(a1)+ K*(i1) 设有一维数组M[0,每个数组元素用相邻的5个字 节存储。存储器按字节编址,设存储数组元素M0的第 个字节的地址是98,则M3的第一个字节的地址是? 13 LOC(Ma3)=98+5×(4-1)=113
13 2.2线性表的顺序存储结构 2.2.1 顺序存储结构 把线性表中的所有元素按照其逻辑顺序依次存储 到从计算机存储器中指定存储位置开始的一块连续 的存储空间中。 假设首元素a1的存放地址为LOC(a1 )(称为首地址), 线性表每个元素占用k(k= sizeof(ElemType))个存储单元 ,则第i个元素ai的存储位置为:LOC(ai ) = LOC(a1 ) + K *(i-1) 设有一维数组M[10],每个数组元素用相邻的5个字 节存储。存储器按字节编址,设存储数组元素M[0]的第 一个字节的地址是98,则M[3]的第一个字节的地址是? LOC( M[3] ) = 98 + 5 ×(4-1) =113
22线性表的顺序存储结构 CC++实现线性表的版序存结构需注 两个主要步骤: ADT List 数据对象: D={al≤≤n,m≥0,a1是 ElemType类型} 数据关系: R={<a2a1+1|a,a1+1∈D,i=1,,n-1} 基本运算: 1、定义 ElemType类型 2、定义存储线性表的顺序存储结构体 14
14 2.2线性表的顺序存储结构 ADT List { 数据对象: D={ai | 1≤i≤n,n≥0, ai是ElemType类型} 数据关系: R={<ai ,ai+1>|ai ,ai+1∈D,i=1,…,n-1} 基本运算: } 1、定义ElemType类型 2、定义存储线性表的顺序存储结构体 … 1、用C/C++实现线性表的顺序存储结构需注 意两个主要步骤:
22线性表的顺序存储结构 2,CC++笑观线线物的店能 (1)中明与定义说明:为了使用系统的 malloch # nclude" 'stdafx.h'函数在内存为线性表分配存储 include <malloc. 空间,必须包含此头文件 typedef char elemtype;/ ElemType定义为字符类型 # define maxsize50线性表数据元素的最大数目 typedef struct存储线性表的结构体 ElemType data maxsize;/存储线性表数据元素 int length;/存储线性表的元素个数一长度 Alist 说明:以上定义与申明必须位于主函数之前
15 2.2线性表的顺序存储结构 #include "stdafx.h" #include <malloc.h> typedef char ElemType; 说明:为了使用系统的malloc() 函数在内存为线性表分配存储 空间,必须包含此头文件 #define MaxSize 50 //ElemType 定义为字符类型 //线性表数据元素的最大数目 typedef struct //存储线性表的结构体 { ElemType data[MaxSize];//存储线性表数据元素 int length;//存储线性表的元素个数—长度 } SqList; 说明:以上定义与申明必须位于主函数之前 (1)申明与定义 2、用C/C++实现线性表的顺序存储结构