第二章线性表(第1讲).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机科学与技术教研室 第二章 线性表 2.1线性表的类型定义 2.2 线性表的顺序表示和实现(1) 线性结构特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有一个前驱 除最后一个外,集合中的每个数据元素均只有一个后继 2.1 线性表的类型定义 定义:一个线性表是n个数据元素的有限序列 2.2 线性表的顺序表示和实现 顺序表: 定义:用一组地址连续的存储单元存放一个线性表叫~ 元素地址计算方法: LOC(ai)=LOC(a1)+(i-1)*L LOC(ai+1)=LOC(ai)+L 其中: L—一个元素占用的存储单元个数 LOC(ai)—线性表第i个元素的地址 特点: 实现逻辑上相邻—物理地址相邻 实现随机存取 实现:可用C语言的一维数组实现 * * 第 1 讲 , , , a , ( ) n i a a a …… …… 2 1 如 例 英文字母表(A,B,C,…..Z)是一个线性表 例 数据元素 特征: 元素个数n—表长度,n=0空表 1in时 ai的直接前驱是ai-1,a1无直接前驱 ai的直接后继是ai+1,an无直接后继 元素同构,且不能出现缺项 例2-1 假设有两个集合A和B分别用两个线性表LA和LB表示 (即:线性表中的数据元素即为集合中的成员), 现要求一个新的集合A=A∪B。 要求对线性表作如下操作:扩大线性表LA, 将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中。 1.从线性表LB中依次取得每个数据元素; GetElem(LB, i)→e 2.依值在线性表LA中进行查访; LocateElem(LA, e, equal( )) 3.若不存在,则插入之。 ListInsert(LA, n+1, e) void union(List La, List Lb) { // 将所有在线性表Lb中但不在La中的数据元素插入到La中 La_len = ListLength(La); Lb_len =ListLength(Lb); // 求线性表的长度 for (i = 1; i = Lb_len; i++) { GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if(!LocateElem(La, e, equal( )) ListInsert(La, ++La_len, e); // La中不存在和 e 相同的数据元素,则插入之 } } // union 例2-2 已知一个非纯集合B,试构造一个纯集合A, 使A中只包含B中所有值各不相同的数据元素。 void purge(List La, List Lb) { // 已知线性表Lb中的数据元素依值非递减有序排列(Lb是有序表) // 构造线性表La,使其只包含Lb中所有值不相同的数据元素 InitList(LA); La_len = ListLength(La); Lb_len =ListLength(Lb); // 求线性表的长度 for (i = 1; i = Lb_len; i++) { GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if(!equal (en, e)) { ListInsert(La, ++La_len, e); en = e; } // La中不存在和 e 相同的数据元素,则插入之 } } // purge 例2-3 归并两个“其数据元素按值非递减有序排列的” 线性表LA和LB,求得线性表LC也具有同样特性 设 La = (a1, …, ai, …, an) ??? Lb = (b1, …, bj, …, bm) Lc = (c1, …, ck, …, cm+n) 则 Ck = k = 1, 2, …, m+n 1.分别从LA和LB中取得当前元素ai和bj; 2.若ai≤bj,则将ai插入到LC中,否则将bj插入到LC中。 void MergeList(List La, List Lb, List Lc) { // 已知线性表La和Lb中的元素按值非递减排列。 // 归并La和Lb得到新的线性表Lc, // Lc的元素也按值非递减排列。 InitList(Lc); i = j = 1; k = 0; La_len = ListLength(La); Lb_len = ListLength(Lb); while ((i = La_len) (j = Lb_len)) { // La和Lb均非空 GetElem(La, i,

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档