网站大量收购独家精品文档,联系QQ:2885784924

数据结构-第2章-V2A.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  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章 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示及相加 2.l 线性表的类型定义 线性表是最常用、最简单的数据结构。 一个线性表是n个数据元素的有限序列。 数据元素可以是一个数、一个符号、也可是一幅图、一页书或更复杂的信息。 2.l 线性表的类型定义 一般定义 线性表(Linear List) :由n(n≧0)个同种类型数据元素(结点)a1,a2, …an组成的有限序列。其中n为表的长度。当n=0时称为空表,常常将非空的线性表(n0)记作: (a1,a2,…an) 这里的数据元素ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。 但同一线性表中的元素必定具有相同特性,即属同一数据对象,相邻数据元素之间存在着序偶关系。 2.l 线性表的类型定义 举例 例1、26个英文字母组成的字母表 (A,B,C、…、Z) 例2、某校从1978年到1983年各种型号的计算机拥有量的变化情况。 (6,17,28,50,92,188) 2.l 线性表的类型定义 例3、学生健康情况登记表如下: 2.l 线性表的类型定义 线性表的逻辑特征是: 在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋; 有且仅有一个终端结点an,它没有直接后继; 其余的内部结点ai(2≦i≦n-1)都有且仅有一个直接前趋a i-1和一个直接后继a i+1。 通常ai是ai+1的直接前趋(前驱、前件)元素,ai+1是ai的直接后继(后件)元素。 i为位序。 2.l 线性表的类型定义 形式化定义 Linearlist = (D, R) 其中: D0为某个数据对象的集合 N为线性表长度 2.l 线性表的类型定义 抽象数据类型线性表的定义(P19) ADT List{ 数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n=0} 数据关系: R1={ai-1,ai| ai-1,ai(- D, i=2,...,n} 基本操作: InitList(L) DestroyList(L) 2.l 线性表的类型定义 ClearList(L) //置为空表 ListEmpty(L) //判是否为空表? ListLength(L) GetElem(L,i,e) LocateElem(L,e,compare()) PriorElem(L,cur_e,pre_e) NextElem(L,cur_e,next_e) 2.l 线性表的类型定义 ListInsert(L,i,e) ListDelete(L,i,e) ListTraverse(L,visit()) union(La, Lb)//也可作为基本操作之一 }ADT List 例2-1 求A=AUB(P20) void union (List La, List Lb) { //将Lb中但不在La中的元素插入La中 La_len=ListLength(La); //求La长度 Lb_len=ListLength(Lb); //求Lb长度 For (i=1;i=Lb_len;i++) { GetElem(Lb,i,e); if(!LocateElem(La,e,equal) ListInsert(La,++La_len,e); } }//union 2.2 线性表的顺序表示和实现 线性表的顺序表示 用一组地址连续的存储单元依次存储线性表的数据元素。 C语言中的数组即采用顺序存储方式。 图示:数组在内存中的存放 顺序表:顺序存储结构的线性表 假设线性表的每个元素需占用 L个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则存在如下关系: LOC(ai+1)=LOC(ai)+L LOC(ai)=LOC(a1)+(i-1)*L 式中LOC(a1)是线性表的第一个数据元素的存储位置,通常称做线性表的起始位置或基地址。常用b表示。 线性表的这种机内表示称做线性表的顺序存储结构或顺序映象。 顺序存储结构的线性表也简称为顺序表。 顺序表的特点是以元素在计算机内物理位置相邻来表示线性表中数据元素之间的逻辑关系。 顺序表的类C语言表示 线性表的动态分配顺序存储结构 #define LIST_INIT_SIZE 100 #define LIST_INCREMENT 10 //用于动态分配 typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量以一数据元素存储长度为单位 }SqList; 顺序表部分操作的类C实现: Status InitList_Sq

文档评论(0)

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

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

1亿VIP精品文档

相关文档