线性表-单链表分析.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性表-单链表分析

第二章 线性表 线性结构是 一个数据元素的有序(次序)集。 线性结构的基本特征 集合中必存在唯一的一个“第一元素”; 集合中必存在唯一的一个“最后元素”; 除最后元素外,均有唯一的后继; 除第一元素外,均有唯一的前驱。 本章主要讨论四个问题: 2.1 线性表的类型定义 2.2 线性表类型的实现——顺序映像 2.3 线性表类型的实现——链式映像 2.4 一元多项式的表示 2.1 线性表的类型定义 线性表(Linear List) : 由n(n≧)个数据元素(结点)a1,a2, …an组成的有限序列。其中数据元素的个数n定义为表的长度。当n=0时称为空表,常常将非空的线性表(n0)记作: (a1,a2,…an) 这里的数据元素ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。 例1、26个英文字母组成的字母表 (A,B,C、…、Z) 例2、某校从1978年到1983年各种型号的计算机拥有量的变化情况。 (6,17,28,50,92,188) 例3、学生健康情况登记表如下: 抽象数据类型线性表的定义如下: ADT List{ 数据对象: D={ai|ai∈Elemset,i=1,2,……,n,n≥0} {称n为线性表的表长; 称n=0时的线性表为空表.} 数据关系: R1={ai-1,ai| ai-1,ai∈D, i=2,……,n} {设线性表为(a1,a2……, ai…… an ),称i为ai在线性表中的位序} 基本操作: {结构初始化} InitList(L) 操作结果:构造一个空的线性表L {销毁结构} DestroyList(L)初始条件:线性表L已经存在 操作结果:销毁线性表L {引用型操作} ListEmpty(L) ListLength(L) PriorElem(L,cur_e,pre_e ) NextElem(L,cur_e,next_e ) GetElem(L,i,e ) LocateElem(L,c,compare() ) ListTraverse(L,visit() ) {加工型操作} ClearList(L) PutElem(L,i,e) ListInset(L,i,e) ListDelete(L,i,e) 利用上述定义的线性表 可以完成其他更复杂的操作。 例2-1 假设有两个集合A和B分别用两个线性表LA和LB表示,现要求一个新的集合 A=A∪B 上述问题可以演绎为: 要求对线性表作如下操作:扩大线性表LA,将存在于LB而不存在于LA中的数据元素插入到线性表LA中去。 例题2-1算法如下: 1从线性表LB中依次取得每个数据元素, GetElem(LB,i)→e 2 依值在线性表LA中进行查访, LocatElem(LA,e,equal()) 3若不存在,则插入之, ListInsert(LA,n+1,e) 例题 void union(List La,List Lb) { 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-en,e) //LA中若不存在和e相同的数据元素,则插入之 } }//union 例2-2 巳知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的元素仍按值非递减有序排列。 void mergelist(list la,list lb,list lc) initlist(lc); I=j=1;k=0; la-len=listlength(la); lb-len=listlength(lb); while((I=la-len)(j=lb-len)){ getelem(la,I,ai);getelem(lb,j,bj); if(ai=bj){listinsert(lc,++k,ai);++I;}

文档评论(0)

441113422 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档