第2章线性表.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表和串 2.1 线性表的定义 2.1.1 线性表的逻辑结构 线性表是有限元素(e0,e1, ...,ei,...,en-1)的有序序列的集合。其中n是有穷自然数,表中的每个元素ei具有相同的特性,表中元素占用空间大小相同,记为:size,n是表的长度。当n=0时,表为空;当n0时,e0是第一个元素,en-1 是最后一个元素。 “有序”是指线性元素间的相互位置关系。ei-1是 ei的直接前驱元素,而元素ei一定在元素ei+1之前,称ei+1是ei的直接后继元素。而且,每个元素只有一个直接前驱元素(除第一个元素),也仅有一个直接后继元素(除最后一个元素)。 2.1.2 线性表的抽象数据类型 2.2 线性表的顺序存储及操作 2.2.1 线性表顺序存储 1. 线性表顺序存储概念 线性表顺序存储方式,是将线性表中的数据元素连续顺序地存放于存储器中相邻的单元 。 线性表顺序存储结构由三部分组成: 所有数据元素可用于存储的空间element,element又是由若干个数据元素空间组成。 记录线性表中已存放的数据元素个数的空间length,这个值小于等于可用的元素空间数。 线性表可用元素空间总数存放的空间maxsize。 线性表占用的第一个存储单元的地址,就是线性表的首地址,也是线性表中第一个数据元素(e0)的首地址。 “首地址”有两种理解: 一是相对于线性表本身,是线性表的始点,即“0号地址”,这就是通常所说的“相对地址”; 二是相对于计算机的物理存储空间,线性表的始点相对于计算机物理存储空间则是一个“物理地址”,一般记为:location(e0),通常称为“绝对地址”或“基地址”。 元素ei的地址则可以立即由下面公式求出。 location(ei)=location(e0)+i×size 请注意:这个公式是元素序号由0到n-1安排,若元素序号是由j开始安排,则上面公式应改为: location(ei)=location(ej)+(i-j)×size 线性表的连续顺序存储结构具有很高的存取效率,它是一种高效的直接存取存储结构。 2. 线性表顺序存储结构定义 线性表结构: struct LinearList { EType *element; int length; int maxSize; } ; LinearList L,L1,L2; 学生信息的情况数据元素结构类型(EType)及线性表 struct STUDENT { unsigned number[10]; char name[8]; char sex[2]; int age; char place[20]; }; struct LinearList { STUDENT *element; int length; int maxSize; } ; LinearList stud1, stud2; 2.2.2 线性表顺序存储结构下的操作 1. 构造空线性表L 空线性表是指表中没有一个数据元素,但数据元素的空间和线性表结构存在 void CreatLinearList (LinearList L , int MaxListSize) {// 构造一个最大容量为MaxListSize 的线性表L L.maxsize = MaxListSize; L.element = new EType [L.maxsize]; L.length = 0; } 算法的时间复杂性是O(1)。 2. 输出线性表L中的所有数据元素 void OutputLinearList (LinearList L) {// 逐个地输出线性表L中的数据元素 for (int i = 0; i L.length; i++) cout L.element[i] endl; } 算法的时间复杂性是O(length )。 3. 线性表L中取第k个元素 bool GetElemLinearList (LinearList L,int k, EType result) { //L中第k个元素取至result 中,如不存在返回false,找到返回true,result取回 if (k 1 || k L.length) return false ; result = L.element[k - 1]; return true; } 算法的时间复杂性是O(1 )。 4. 线性表L中查找元素x int SearchLinearList (LinearLis

文档评论(0)

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

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

1亿VIP精品文档

相关文档