第02章 线性表 数据结构 (第二版) 教学课件.pptVIP

  • 4
  • 0
  • 约8.32千字
  • 约 34页
  • 2018-01-28 发布于浙江
  • 举报

第02章 线性表 数据结构 (第二版) 教学课件.ppt

第02章 线性表 数据结构 (第二版) 教学课件

第二章 线性表 2.1 线性表及其基本运算 一、线性表(linear_list) 线性表是n个数据元素的有限序列,记为: L=(a1,a2, …,an) 2.1 线性表及其基本运算 线性表是最常用且最简单的一种数据结构, 它的形式化定义为: linear_list=(D,R) 其中,D={ai| ai ∈DO,i=1,2,...,n,n=0} R={N},N={ai-1, ai|ai-1, ai∈D0,i=2,3,...,n} D0为某个数据对象, N是一个序偶的集合,它表示线性表中数据元素之间的相邻关系。 2.1 线性表及其基本运算 二. 基本运算 INITIATE(L) 初始化操作 设定一个空的线性表L LENGTH(L) 求长度函数 值为L中数 据元素的个数 GET(L,i) 取元素函数 1=i=LENGTH(L)时返回L中第i个数据元素,否则为空元素NULL。 i称为该数据元素在L中的位序 PRIOR(L,elm) 求前驱函数 elm为L中的一个数据元素,若它的位序大于1,则函数值为elm前驱,否则为NULL NEXT(L,elm) 求后继函数 若elm的位序小于表长, 则函数值为elm的后继,否则为NULL 2.1 线性表及其基本运算 LOCATE(L,x) 定位函数 给定值x,若x不在表中, 则返回0,否则,返回x在表中第一次出现时的位序 INSERTE(L, i , b)前插操作 在第i个元素之前插入新元素b,i 的取值范围为:1=i=n+1;i =n+1表示在表尾插入, n为表长 DELETE(L,i) 删除操作 删除线性表L中的第i个元素, 1=i=n EMPTY(L) 判空表函数 若L为空表,则返回布尔值“true”,否则返回布尔值“false” CLEAR(L) 表置空操作 将L置为空表 2.1 线性表及其基本运算 例2-1 求两个集合的并,即A=A∪B 分析:设A、B分别由两个线性表LA和LB表示, 要求: 将LB中存在而LA中不存在的DE插入到表LA中。 2.1 线性表及其基本运算 形式化算法描述(类PASCAL): PROC union(VAR LA:Linear_list; LB:Linear_list); {将所有在LB中存在而LA中不存在的DE插入到LA中去} n:=LENGTH(LA); {确定线性表LA的长度} FOR i:=1 TO LENGTH(LB) DO [ x:=GET(LB,i); {取LB中第i个数据元素} k:=LOCATE(LA,x); {在LA中进行搜索} IF k=0 THEN [ INSERT(LA,n+1,x);{在LA表尾插入} n:=n+1 {表长加1} ] ] ENDP; {union} 2.2 线性表的顺序存储结构 一、顺序存储结构 用一组地址连续的存储单元依次存储线性表的元素。设线性表的每个元素占用k个存储单元,则第i个元素ai 的存储位置为:Loc(ai)=Loc(a1)+(i-1)*k 其中,Loc(ai)为线性表的起址。 2.2 线性表的顺序存储结构 线性表顺序存储结构的定义为: CONST maxlen=线性表可能达到的最大长度; TYPE sqlisttp=RECORD    elem:ARRAY[1..maxlen] OF elemtp;     last:0..maxlen     END 在上述描述中,线性表的顺序存储结构是一个记录型的结构。 其中,数据域 elem描述了线性表中的DE占用的数组空间, 数组的第i个分量为线性表中第i 个DE的存储映象; 数据域 last指示最后一个DE在数组空间中的位置,也是表长。 2.2 线性表的顺序存储结构 二. 插入和删除操作 1. 插入运算 INSERT(L, i, b) 插入前:L=(a1, ... , ai-1, ai, ... ,an) 插入后:L=(a1, ... , ai-1, b, ai, ... ,an ) 2.2 线性表的顺序存储结构 PROC ins_sqlist(VAR v:sqlisttp;i:integer;b:elemtp); {在顺序存储结构的线性表v中第i个DE

文档评论(0)

1亿VIP精品文档

相关文档