- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲线性表 - 副本
第四讲 线性表
一、概述
在处理实际问题时,大量的是表格处理.例如,一个班级50名学生的某门考试的成绩表.
这类表通常称为“线性表”.每个表是一个整体,同时,它们又都是由多个互相独立的成分(或元素)有序(线性)地组成的,各个成分的类型均相同,这种表在PASCAL语言中通常用数组来实现其组织和加工.
线性表是最常用且最简单的一种数据结构.简而言之,一个线性表是N个数据元素的有限序列.至于每个数据元素的具体含义,在不同的情况下各不相同,它可以是一个数,或一个符号,也可以是一页书,甚至其它更复杂的信息.例如由每个英文字母组成的字母表:(A,B,C,……,Z)是一个线性表,表中的数据元素是单个字符.又如某校从1993年至1998年各种型号计算机的拥有量的变化情况,可以用线性表的形式给出(16,27,38,60,102,198),表中的数据元素是自然数,线性表的特点是:
① 存在唯一的一个被称作“第一个”的数据元素;
② 存在唯一的一个被称为“最后一个”的数据元素;
③ 除第一个元素外,线性表中的每个数据元素均只有一个前驱;
④ 除最后一个元素之外,每个数据元素均只有一个后继.
综上所述,线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特性,因此属于同一类数据对象.
对线性表可进行的运算种类繁多,其中包括:
① 确定表的长度n,即求表中数据元素的个数;
② 从左到右(或从右到左)读表,即按a1, a2…,an(或an,an-1 …,a1 )读取数据元素的值;
③ 存、取表中第i个数据元素(1≤i≤n),即改变或检查第i个数据元素的值;
④ 在第i-1个和第i个数据元素之间(1≤i≤n)插入一个新的数据元素,使原来的第i,i+1,…,n个数据元素变成为第i+1,i+2,…,n,n+1个数据元素;
⑤ 删除第i个数据元素(1≤i≤n),使原来的第i+1,i+2,…,n个数据元素变成为第i,i+1,…,n-1个数据元素;
⑥ 检索线性表,即在表中查找具有某个特征值的数据元素;
⑦ 对表排序,即按某个特征值递增(或递减)的顺序对表中的数据元素重新排列。
对一个线性表,同时要求进行上述的所有运算,这在计算机的应用中是很少有的。实际上,在很多情况下,只需要完成其中的一部分运算就够了。
二、 线性表的存储结构
在计算机内,线性表可以用不同的方式表示,即有多种存储结构可供选择。对于完成某种运算来说,不同的存储方式,其执行效果是不一样的,为了使所要进行的运算得以有效地执行,在选择存储结构时,必须考虑要施行的是哪些运算,对选定的存储结构,应估计这些运算执行时间的量级,以及它对存储容量的要求。本讲只介绍数组形式存储的线性表。
在计算机内,存储线性表的最简单和最自然的方式,是把表中的数据元素一个接一个地放进一组连续的存储单元之中,也就是说,把表中相邻的数据元素存放在内存中邻接的存储单元里,这种存储方法叫做顺序分配(Sequential Allocation),又称顺序映象(Sequential Mapping),其特点是:逻辑上相邻的数据元素,它们的物理次序也是邻接的。
假设每个数据元素占用L个存储单元,则相邻的两个数据元素ai与ai+1在机器内的存储地址LOC(ai)与LOC(ai+1)将满足下面的关系:
LOC(ai+1) = LOC(ai)+L
而的存储地址LOC(ai)为:
LOC(ai)= LOC(a1)+(i - 1) *L
线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短。
三、线性表的插入和删除
若插入是在表的末尾进行,即在长度为n的线性表(a1, a2,a3,…,an)的第n个元素之后,添加一个新元素,使长度变为n+1的表(a1, a2,a3,…,an,an+1),这很简单,只要在表的第n+1 个位置上写入新元素即可。
若插入是在表的中间进行,即在长度为n的线性表(a1, a2,a3,…,an)的第i(1≤i≤n)个元素之前插入一个新元素,使长度变为n+1的表(a1, a2,a3,…,an,an+1),此时的情况要稍复杂一点,因为顺序分配是把表中的元素依次放在一组连续的存储单元中,也就是说,表中的元素在机器内是一个紧接着一个,没有“空隙”。为了能在第i个元素之前插入一个新元素,就必须把从第i个到第n个之间的元素依次向后挪动一个位置,腾出一个空位给插入的元素。
所以,在一般情况下,顺序分配的线性表的插入算法为:
① 把ai到an的元素后移一个位置,腾出空位。
② 往第i个位置上写入新值。
现用一个过程描述如下:
procedure insert(var v:arraytyp
您可能关注的文档
最近下载
- 复合材料 第八章 先进复合材料.ppt VIP
- 人教版八年级物理第九单元《压强》测试题及答案.doc VIP
- 《复合材料学》全套教学课件.pptx
- 复合材料复合材料导论.ppt VIP
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 冠心病的介绍与治疗PPT.pptx VIP
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试参考题库附答案解析.docx VIP
- 2.2.3 气候——特征和影响因素(课件)八年级地理上册(人教版).pptx VIP
- 八年级地理上册湘教版第二章第二节中国的气候课件.pptx VIP
- 2024建筑施工升降机安全生产隐患识别图集.docx VIP
文档评论(0)