- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表1
39 40 平均移动次数为表长的一半 41 43 同样首先分析,删除元素使线性表的逻辑结构发生什么变化? 假设删除线性表中第i个元素,使得线性表 (a1, …, ai-1, ai, ai+1, …, an) 改变为 (a1, …, ai-1, ai+1, …, an) 即: (1) 改变了表中元素之间的关系,使ai-1, ai, ai, ai+1改变为ai-1, ai+1 所以逻辑结构关系的改变,也要体现在物理位置上。 对顺序表而言,需要改变从第 i+1 个元素起到第 n 个元素的存储位置,即进行“从第 i+1 到第 n 个元素往前移动一个位置”。 (2) 表长减1 动画演示:TH:SequenceListDEl 44 4 5 6 什么是线性结构? 简单地说,线性结构是一个数据元素的有序(次序)集合。 这里的 有序 仅指在数据元素之间存在一个 领先 或 落后 的次序关系,而非指数据元素 值 的大小可比性。 7 8 9 (6,17,28,50,62,88)// 每个数据元素是一个整数, 表示每年拥有计算机的数量,当然也可表示其他含义 10 (6,17,28,50,62,88)// 每个数据元素是一个整数, 表示每年拥有计算机的数量,当然也可表示其他含义 11 12 1. 序偶 ai-1 ,ai |表示ai-1 是ai 的直接前驱,反之, ai 是ai-1 的直接后继。 2.线性表的操作很多,为讨论方便起见,在此将它归为四类。 {结构初始化}:任何数据结构在被使用之前都必须进行“初始化” ,它类似于编程中使用的变量都必须先有定义。 13 {销毁结构} :任何数据结构不再使用时都必须进行“结构销毁” ,其实质为“释放”它所占有的存储空间。 14 PriorElem( L, cur_e, pre_e )若 cur_e 是线性表 L 中第一个数据元素,则它的前驱 pre_e 为“空元素”。 NextElem( L, cur_e, next_e ): 若 cur_e 是线性表 L 中最后一个数据元素,则它的后继 next_e 为空元素。 15 GetElem( L, i, e )此操作的结果是求得线性表 L 中和位序 i 相对应的数据元素,因此,只有当 i 的值在线性表的长度范围内才有意义。 LocateElem( L, e, compare( ) )这是和上一个操作“相对”的操作,通常称为“定位函数”,这是一种广义的定位函数写法,以 compare() 作为判定的条件,参数 e 和线性表中数据元素具有相同类型。较多场合是以“相等”作为判定条件,此时可省略函数参数,且操作结果为:若线性表中存在与 e 值相同的数据元素,则返回第一个这样的元素在表中的位序,否则返回函数值为0。ListTraverse(L, visit( ))visit() 亦为函数参数,常见的情况是“依次输出表中元素的值”,同样在这种情况下,通常的写法也是省略函数参数。 容易看出以上7个操作的结果都没有改变线性表中的数据元素和数据元素之间的关系,因此它们都是引用型的操作,函数中的L是传值参数。而以下四个操作的结果或修改表中的数据元素,或修改元素之间的关系,被称为加工型的操作,为了便于返回操作的结果,用引用 传递参数L,即在参数 L 之前加有符号。在以后的讨论中,我们均称它们为引用参数。 16 ClearList( L ) 值得注意的是,在进行了 DestroyList(L) 操作之后,线性表 L 不再存在,即不能在以后的程序中再引用它,而在对线性表L进行 ClearList(L) 操作之后,仅是删除表中所有元素,在以后的程序中仍可对它进行某些“合法”操作,如判空、插入等。PutElem( L, i, e ) 和GetElem操作相同,i 的值必须在线性表的长度范围内。 ListInsert( L, i, e ) 可在线性表中任意一个元素之前插入一个新的数据元素,i=1 意为在第一个元素之前插入一个新的数据元素,i=LengthList(L)+1 则为在最后一个元素之后插入一个新的数据元素。换句话说,操作结果是使新插入的数据元素成为插入之后的线性表中第 i 个数据元素,显然,插入位置 i 的合法值应为 1≤i≤LengthList(L)+1。 ListDelete( L, i, e ) 被删除的元素必须是当前线性表中存在的元素,因此被删元素的位序应满足条件 1≤i≤LengthList
文档评论(0)