数据结构周屹任义主编第2章课件教学.pptVIP

数据结构周屹任义主编第2章课件教学.ppt

  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章课件教学.ppt

第2章 线性表 1)掌握线性表的逻辑结构与存储结构; 2)掌握线性表在顺序存储和链式存储上实现基本操作的方法; 3)了解线性表两种存储结构上的不同特点,从时间和空间复杂度比较不同存储的算法。 4)掌握一元多项式的表示及其操作方法; 2.1 线性表的基本概念 线性表是由同一类型的数据元素构成的线性结构 线性表定义如下: 线性表是具有相同数据类型的n(n=0)个数据元素的有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) 其中数据元素的个数n定义为表的长度。当n=0 时称为空表。这里的数据元素ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。 线性表的基本操作 线性表初始化:Init_List(L) 初始条件:表L不存在 操作结果:构造一个空的线性表 求线性表的长度:Length_List(L) 初始条件:表L存在 操作结果:返回线性表中所含元素的个数 取表元:Get_List(L,i) 初始条件:表L存在且1=i=Length_List(L) 操作结果:返回线性表L中第i个元素的值或地址 按值查找:Locate_List(L,x),x是给定的一个数据元素。 初始条件:线性表L存在 操作结果:在表L中查找值为x的数据元素,其结果返回在L中首次出现的值为x的那个元素的序号或地址,称为查找成功; 否则,在L中未找到值为x的数据元素,返回一特殊值表示查找失败。 插入操作:Insert_List(L,i,x) 初始条件:线性表L存在,插入位置正确 (1=i=n+1,n为插入前的表长)。 操作结果:在线性表L的第 i 个位置上插入一个值为 x 的新元素,这样使原序号为 i , i+1, ... , n 的数据元素的序号变为 i+1,i+2, ... , n+1,插入后表长=原表长+1。 删除操作:Delete_List(L,i) 初始条件:线性表L存在,1=i=n。 操作结果:在线性表L中删除序号为i的数据元素,删除后使序号为 i+1, i+2,..., n 的元素变为序号为 i, i+1,...,n-1,新表长=原表长-1。 2.2.1 线性表的顺序存储结构 1. 顺序表 假设线性表的每个元素需占用L个存储单元,并以所占的第一个单元的存储地址作为数据元素的存储位置。则线性表中第i+1个数据元素的存储位置LOC( a i+1)和第i个数据元素的存储位置LOC(ai )之间满足下列关系: LOC(a i+1)=LOC(a i)+L 线性表的第i个数据元素ai的存储位置为: LOC(ai)=LOC(a1)+(i-1)*L 由于C语言中结构类型来定义顺序表类型。 # define ListSize 100; typedef int DataType; typedef struc { DataType data[ListSize]; int last; } Sqlist; 2. 插入运算 线性表的插入是指在表的第i个位置上插入一个值为 x 的新元素,插入后使原表长为 n的表: (a1,a2,... ,ai-1,ai,ai+1,... ,an) , 成为表长为 n+1 表: (a1,a2,...,ai-1,x,ai,ai+1,...,an ) , i 的取值范围为1=i=n+1 。 顺序表上完成这一运算通过以下步骤进行: (1) 判满? (2) i的合法性? (3)将ai~an 顺序向下移动,为新元素让出位置; (4) 将 x 插入第i个位置; (5)修改 last 指针(修改表长),使之仍指向最后一个元素。 算法如下: int Insert_SeqList(SeqList *L,int i,datatype x) { int j; if (L-last==MAXSIZE-1) { printf("表满"); return(-1); } /*表空间已满,不能插入*/ if (i1 || iL-last+2)  /*检查插入位置的正确性*/ { printf("位置错");return(0); } for(j=L-last;j=i-1;j--) L-data[j+1]=L-data[j]; /* 结点移动 */ L-data[i-1]=x;     /*新元素插入*/ L-last++

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档