第2章 线性表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表 2.1 线性表的概念及运算 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 顺序表和链表的比较 2.5 小结 习题2 本章重点: 线性表的逻辑结构 线性表的顺序存储结构 线性表的各种链式存储结构 掌握单链表上的相关运算 线性结构通常以表的形式体现,称为线性表。 线性表有很多形式,如线性顺序表、堆栈、队列、字符串、线性链表等。 2.1.1 线性表的定义 定义:一个线性表是n(n≥0)个类型相同的数据元素a1,a2,…,an的有限序列。 其中,n为表的长度。 若n=0,则表示一个空表,表示无数据元素; 若n0,为非空线性表。 表示形式:(a1,a2,…,an) 逻辑特征:在一个非空线性表中, 有且只有一个起始结点a1,它没有直接前驱,仅有一个直接后继; 有且只有一个终端结点an,它没有直接后继,仅有一个直接前驱; 其余的内部结点ai(1in),均有唯一前驱ai-1和唯一后继ai+1。 例如,26个英文字母表(A, B, C, …, X, Y, Z)是一个线性表,其中的数据元素是单个字母。 再如,某公司2000年每月产值表(400,420,500,…,600,650)(单位:万元)是一个长度为12的线性表,其中的每一个数值就是一个数据元素。 注:线性表中的元素可以是各种各样的,但必须具有相同性质. 如都是字母,都是数字,甚至都是具有相同性质的表。 2.1.2 线性表的运算 (1) 置空表SETNULL(L) (2) 求长度LENGTH(L) (3) 取结点GET(L,i) (4) 定位LOCATE(L,x) (5) 查入INSERT(L,x,i) (6) 删除DELETE(L,i) 自学P14中 3分钟 2.2 线性表的顺序存储 2.2.1 顺序表 最常用的线性表的存储结构为顺序存储。 采用顺序存储结构的线性表通常称为顺序表。 顺序表定义: 把线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里,所得到的表叫顺序表。 假设每个数据元素在存储器中占用k个存储单元, 第一个元素的存储地址为LOC(a1), 第i个元素的存储地址为LOC(ai), ai+1的存储地址就是LOC(ai)+k, 因此可以推算出ai的存储地址LOC(ai)为 LOC(ai)=LOC(a1)+(i-1)×k 从以上的地址计算公式可知: 只要已知线性表第一个数据元素在内存中的存储地址, 又知道每一个数据元素所占存储单元的个数, 就能计算出第i个数据元素在内存中的位置。 例如,线性表中第一个数据元素在内存中的地址LOC(a1)为1000,每一个数据元素占用2个存储单位,即k=2, 则第25个数据元素在内存中的地址是 LOC(a25)=LOC(a1)+(i-1)k=1000+(25-1)×2=1048 说明: 顺序表是一种随机存取结构。(注:存取和存储两个概念不同)。 顺序表是用向量(Vector)实现的线性表,向量的下标可以看成是结点的相对地址,特点是逻辑上相邻的结点其物理位置亦相邻。 如果用C语言的数组表示线性表a1, a2, …, an,则可使用如下的说明: typedef int elemtype; #define maxsize 1024 typedef struct List {elemtype list[maxsize]; int size; }seqlist; 其中,maxsize是数组list中元素个数的最大值, size指示线性表的长度. 2.2.2 顺序表上的基本运算 重点:插入操作、删除操作、查找操作 2.3.1 顺序表元素插入操作 顺序表元素插入(在第i个位置上插入)算法步骤可描述如下: 检测线性表是否有空间可供插入; 从最末一个元素an到ai逐个后移,腾出一个空位或空的存储单元i; 插入一个新的元素,修正线性表的当前长度。 2.3.2 顺序表元素删除操作 线性表的删除运算是指将表的第i个 (1≤i≤n) 元素删去,使长度为n的线性表(e1,…, ei-1,ei,ei+1,…,en)变成长度为n-1的线性表(e1,…, ei-1, ei+1,…,en)。  例如:线性表(4, 9, 15, 21, 28, 30, 30, 42, 51, 62)删除第5个元素, 则需将第6个元素到第10个元素依次向前移动一个位置,如下图所示。 删除一个元素的算法: 线性表的查找算法如下: 2.2.3 顺序表应用举例 例2.2: 有两个顺序表LA和LB,其元素均为非递减有序排列, 编写一个算法,将它们合并成一个顺序表LC, 要求LC也是非递减有序排列

文档评论(0)

82393aa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档