数据结构第二章.pptVIP

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表 2.1 线性表的类型定义 数据元素之间的关系: ai-1领先于ai,ai领先于ai+1,称ai-1 是ai的直接前驱元素; ai+1 是ai的直接后继元素。 除a1外,每个元素有且只有一个直接前驱元素,除an外,每个元素有且只有一个直接后继元素。 三、线性表的形式化定义 线性表是最常用且最简单的一种数据结构。 形式化定义:List=(D,R) 其中,D={ai|ai∈D0,i=1,2,…,n,n=0} R={N},N={ ai-1 , ai| ai-1 , ai ∈D0 ,i=1,2,…,n} 同一线性表中的元素必定具有相同的特性,即属同一数据对象。D0为某个数据对象,N是一个序偶的集合,表示线性表中的数据元素之间的相邻关系。 如: LA=(3, 5, 8, 11) LB=(2, 6, 8, 9, 11, 15, 20) 则: LA=(3, 5, 8, 11, 2, 6, 9, 15, 20) 算法思想: 依次从LB中取元素; 判断LA中是否存在此元素; 若LA中不存在,则将此元素插入到LA中。 例2-2 归并两个“其数据元素按值非递减有序排列”的线性表 LA 和 LB,求得线性表 LC 也具有同样特性。 设 La = (a1, …, ai, …, an) Lb = (b1, …, bj, …, bm) Lc = (c1, …, ck, …, cm+n) 基本操作: 1.初始化 LC 为空表; 2.分别从 LA和LB中取得当前元素 ai 和 bj; 3.若 ai≤bj,则将 ai 插入到 LC 中,否则将 bj 插入到 LC 中; 4.重复 2 和 3 两步,直至 LA 或 LB 中元素 被取完为止; 5.将 LA 表或 LB 表中剩余元素复制插入到 LC 表中。 void MergeList(List La, List Lb, List Lc) { int i = j = 1; k = 0; ElemType ai, bj; InitList(Lc); La len = ListLength(La); Lb len = ListLength(Lb); while (i = La len j = Lb len) { // 表La和Lb均非空 GetElem(La, i, ai); GetElem(Lb, j, bj); if (ai = bj) { ListInsert(Lc, ++k, ai); ++i; } else { ListInsert(Lc, ++k, bj); ++j; } } …… …… while (i = La_len) { // 表La非空且表Lb已空 GetElem(La, i++, ai); ListInsert(Lc, ++k, ai); } // 插入 La 表中剩余元素 while (j = Lb_len) { // 表Lb非空且表La已空 GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj); } // 插入 Lb 表中剩余元素 } // merge_list 算法思想 进行合法性检查,1=i=n+1; 检查线性表是否已满; 将第n个至第i个元素逐一后移一个单元; 在第i个位置上插入新元素; 将表的长度加1. 算法思想 进行合法性检查,1=i=n; 判断线性表是否已空,len=0; 将第i+1个至第n个元素逐一前移一个位置; 将表的长度减1. 线性表顺序存储结构的特点 逻辑上相邻的元素,其物理位置也相邻; 可随机存取表中的任一元素; 必须按最大可能长度预分存储空间,存储空间利用率低,表的容量难以扩充,是一种静态存储结构; 插入删除时,需移动大量元素,平均移动元素为n/2。 ?对链表设置头结点的作用 ?(1) 对带头结点的链表,在表的任何结点之前插入结点或删除表中任何结点,所要做的都是修改前一结点的指针域,因为任何元素结点都有前驱结点。若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点或删除该结点时操作会复杂些。 带头结点链表的引入为了使判空和判结束的处理一致。 ?(2) 对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。 线性表链式存储结构的特点 逻辑上相邻的元素,其物理位置不

您可能关注的文档

文档评论(0)

jtxs877 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档