数据结构精华版.docxVIP

  1. 1、本文档共38页,可阅读全部内容。
  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文档。上传文档
查看更多
PAGE \* MERGEFORMAT1 线性表: (一)、线性结构的特点(有序,有限): ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每个元素均有唯一一个直接前驱; ④ 除最后一个元素外,每个元素均有唯一一个直接后继。 (二)、线性表的定义: 线性表(Linear List) :是由n(n≧0)个数据元素(结点)a1,a2, …an组成的有限序列。该序列中的所有结点具有相同的数据类型。其中数据元素的个数n称为线性表的长度。 概念有:(1)第一个元素叫首节点,最后一个叫尾节点。(2)后继;直接后继;前驱,直接前驱。 (三)、线性表的顺序存储: 1、定义: 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。 2、特点: 若用L表示每个元素所占的存储单元,log(ai+1)表示第(i+1)个元素的存储地址,则有:(用数组形式表示) Log(ai+1)=log(ai)+L; Log(ai)=log(a1)+(i-1); 4、线性表的基本操作: (1)、顺序线性表初始化: Status Init_SqList( SqList *L ) { L-elem_array=( ElemType * )malloc(MAX_SIZE*sizeof( ElemType ) ) ; if ( !L - elem_array ) return ERROR ; else { L-length= 0 ; return OK ; } } (2)、顺序线性表的插入: *实现思想 ? 将线性表L中的第i个至第n个结点后移一个位置。 ?将结点e插入到结点ai-1之后。 ?线性表长度加1。 *算法实现: Status Insert_SqList(Sqlist *L,int i ,ElemType e) { int j ; if ( i0||iL-length-1) return ERROR ; if (L-length=MAX_SIZE) { printf(“线性表溢出!\n”); return ERROR ; } for ( j=L-length–1; j=i-1; --j ) L-Elem_array[j+1]=L-Elem_array[j]; /* i-1位置以后的所有结点后移 */ L-Elem_array[i-1]=e; /* 在i-1位置插入结点 */ L-length++ ; return OK ; } 顺序表的插入操作 平均时间复杂度为 O(n) (3)、顺序表的删除: *实现思想: ?将线性表L中的第i+1个至第n个结点依此向前移动一个位置。 ?线性表长度减1。 *算法实现: ElemType Delete_SqList(Sqlist *L,int i) { int k ; ElemType x ; if (L-length==0) { printf(“线性表L为空!\n”); return ERROR; } else if ( i1||iL-length ) { printf(“要删除的数据元素不存在!\n”) ; return ERROR ; } else { x=L-Elem_array[i-1] ; /*保存结点的值*/ for ( k=i ; kL-length ; k++) L-Elem_array[k-1]=L-Elem_array[k]; /* i位置以后的所有结点前移 */ L-length--; return (x); } } 线性表的删除操作 平均时间复杂度为O(n)。 (4)、顺序线性表的查找定位删除: *实现思想: ? 在线性表L查找值为x的第一个数据元素。 ?将从找到的位置至最后一个结点依次向前移动一个位置。 ?线性表长度减1。 *算法实现: Status Locate_Delete_SqList(Sqlist *L,ElemType x) /* 删除线性表L中值为x的第一个结点 */ { int i=0 , k ; while (iL-length) /*查找值

文档评论(0)

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

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

1亿VIP精品文档

相关文档