




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第二章线性表,.,线性结构的基本特征为:,1集合中必存在唯一的一个“第一元素”;,2集合中必存在唯一的一个“最后元素”;,3除最后元素在外,均有唯一的后继;,4除第一元素之外,均有唯一的前驱。,线性结构是一个数据元素的有序(次序)集,线性表是一种最简单的线性结构,.,2.1线性表的类型定义,2.3线性表的链式表示和实现,2.4一元多项式的表示,2.2线性表的顺序表示和实现,.,2.1线性表的类型定义,一、线性表的逻辑结构线性表是n个数据元素a1,a2,an的有限序列,记为(a1,a2,ai,an)其中,ai可以是一个数、一个字母、一串字符、一页书,甚至更复杂的信息例如:英文字母表(A,B,C,Z)在校生人数变化情况表(800,1500,2400,4100,20000),.,在稍复杂的线性表中,一个数据元素可以由若干个数据项组成,如职工花名册表,在这种情况下,通常把数据元素称为记录,把含有大量记录的线性表称为文件。综上所述:线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同的特性,即属同一数据对象,相邻数据元素之间存在着序偶关系。,.,若将线性表记为(a1,ai-1,ai,ai+1,an),则ai-1是ai的直接前趋元素;ai+1是ai的直接后继元素;当i=1,2,n-1时,ai有且仅有一个直接后继;当i=2,3,,n时,ai有且仅有一个直接前趋;即:第一个元素无前趋;最后一个元素无后继;其它元素仅有一个直接前趋和一个直接后继。线性表中元素的个数n(n0)定义为线性表的长度;n=0时,称为空表;在非空表中的每个数据元素ai都有一个确定的位置,称i为数据元素在线性表中的位序。,.,二、抽象数据类型线性表的定义,ADTList,数据对象:,Dai|aiElemSet,i=1,2,.,n,n0,数据关系:,R1|ai-1,aiD,i=2,.,n,.,基本操作:,结构初始化操作,结构销毁操作,引用型操作,加工型操作,ADTList,.,InitList(,2.依值在线性表LA中进行查访;,3.若不存在,则插入之。,GetElem(LB,i)e,LocateElem(LA,e,equal(),ListInsert(LA,n+1,e),操作步骤:,.,GetElem(Lb,i,e);/取Lb中第i个数据元素赋给eif(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La中不存在和e相同的数据元素,则插入之,voidunion(List/求线性表的长度,for(i=1;i=Lb_len;i+),/union,.,已知一个非纯集合B,试构造一个纯集合A,使A中只包含B中所有值各不相同的数据元素。,仍选用线性表表示集合。,例2-2,.,集合B,集合A,从集合B取出物件放入集合A要求集合A中同样物件不能有两件以上,因此,算法的策略应该和例2-1相同,.,voidunion(List/union,GetElem(Lb,i,e);/取Lb中第i个数据元素赋给eif(!LocateElem(La,e,equal()ListInsert(La,+La_len,e);/La中不存在和e相同的数据元素,则插入之,for(i=1;i=Lb_len;i+),InitList(La);/构造(空的)线性表LA,.,若线性表中的数据元素相互之间可以比较,并且数据元素在线性表中依值非递减或非递增有序排列,即aiai-1或aiai-1(i=2,3,n)则称该线性表为有序表(OrderedList)。,试改变结构,以有序表表示集合。,.,例如:(2,3,3,5,6,6,6,8,12),对集合B而言,值相同的数据元素必定相邻;,对集合A而言,数据元素依值从小至大的顺序插入。,因此,数据结构改变了-解决问题的策略也相应要改变。,.,voidpurge(Listi+)/purge,GetElem(Lb,i,e);/取Lb中第i个数据元素赋给eif(ListEmpty(La)|!equal(en,e)/en为表La中当前最后一个元素ListInsert(La,+La_len,e);en=e;/La中不存在和e相同的数据元素,则插入之,.,已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。例如,设LA=(3,5,8,11)iLB=(2,6,8,9,11,15,20)j则LC=(2,3,5,6,8,8,9,11,11,15,20)k,例2-3,.,VoidMergeList(ListLa,ListLb,List/MergeList,.,2.2线性表的顺序表示和实现,一、线性表的顺序存储结构顺序映象二、顺序存储结构的特点三、线性表的顺序存贮结构示意图及描述四、线性表的基本操作在顺序表中的实现五、顺序存储结构的优缺点,.,一、线性表的顺序存储结构顺序映象,最简单的一种顺序映象方法是:令y的存储位置和x的存储位置相邻。,以x的存储位置和y的存储位置之间某种关系表示逻辑关系。,.,顺序存储结构:用一组地址连续的存储单元依次存放线性表中的数据元素。,a1a2ai-1aian,线性表的起始地址称作线性表的基地址,.,假设线性表的每个数据元素要占c个存储单元,则LOC(ai+1)=LOC(ai)+c所有数据元素的存储位置均取决于第一个数据元素的存储位置,即LOC(ai)=LOC(a1)+(i-1)*c起始地址(基地址),以“存储位置相邻”表示有序对,.,二、顺序存储结构的特点表中相邻的两个元素其物理存储位置也相邻。即以元素在计算机内物理位置上的相邻来表示线性表中数据元素之间相邻的逻辑关系。每个数据元素的存储位置和线性表的起始位置相差一个和数据元素在线性表中的序号成正比的常数;只要确定了起始位置,线性表中任一数据元素都可随机存取。顺序存储结构是一种随机存取的存储结构。,.,三、线性表的顺序存贮结构示意图及描述,ai,a2,a1,内存状态,序号,存储地址,Loc(a1),Loc(a1)+C,Loc(a1)+C*(i-1),1,2,i,an,n,Loc(a1)+C*(n-1),空闲,Loc(a1)+(maxlen-1)*c,.,顺序映像的C语言描述,typedefstructSqList;/俗称顺序表,#defineLIST_INIT_SIZE80/线性表存储空间的初始分配量#defineLISTINCREMENT10/线性表存储空间的分配增量,ElemType*elem;/存储空间基址,intlength;/当前长度,intlistsize;/当前分配的存储容量/(以sizeof(ElemType)为单位),.,四、线性表的基本操作在顺序表中的实现,InitList(if(!L.elem)exit(OVERFLOW);/存储分配失败,L.length=0;/空表长度为零L.listsize=LIST_INIT_SIZE/初始存储容量returnOK;,.,例如:查找顺序表,e=,38,i,1,2,3,4,1,8,50,可见,基本操作是:将顺序表中的元素逐个和给定值e相比较。,.,intLocateElem_Sq(SqListL,ElemTypee,Status(*compare)(ElemType,ElemType)/在顺序表中查询第一个满足判定条件的数据元素,/若存在,则返回它的位序,否则返回0/LocateElem_Sq,O(ListLength(L),算法的时间复杂度为:,i=1;/i的初值为第1元素的位序p=L.elem;/p的初值为第1元素的存储位置,while(i=L.length,if(i=L.listsize)/当前存储空间已满,增加分配newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW);/存储分配失败L.elem=newbase;/新基址L.listsize+=LISTINCREMENT;/增加存储容量,if(iL.length+1)returnERROR;/插入位置不合法,.,StatusListInsert_Sq(SqListp=q;+p)*(p-1)=*p;/被删除元素之后的元素左移-L.length;/表长减1returnOK;,算法时间复杂度为:,O(ListLength(L),p=/表尾元素的位置,if(iL.length)returnERROR;/删除位置不合法,.,考虑移动元素的平均情况:,假设删除第i个元素的概率为,则在长度为n的线性表中删除一个元素所需移动元素次数的期望值为:,若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:,.,L.length-1,0,87,56,p=,例如:ListDelete_Sq(L,5,e),.,在顺序存储结构的线性表中插入或删除一个数据元素时,其时间主要耗费在移动元素上,移动次数不仅依赖于线性表的长度L.length,还依赖于元素插入或删除的位置i。当i=1时,全部元素参加移动,移动次数为n;当i=L.length+1(插入)或L.length(删除)时,不需移动元素。算法的时间复杂度为O(n)。,.,五、顺序存储结构的优缺点无需为表示数据元素之间的关系而增加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国庆中秋野餐活动方案
- 团体自信活动方案
- 国旗涂色活动方案
- 商城代言活动方案
- 四年级信息安全活动方案
- 周末幼儿活动方案
- 团体素质拓展活动方案
- 商户互惠活动方案
- 国庆烘焙坊活动方案
- 商场五一清仓活动方案
- 部编版六年级语文下册课件第1课《北京的春节》《腊八粥》
- 涂装工模拟练习题含答案
- 2023-2024学年河南省永城市小学数学二年级下册期末评估测试题
- 乳腺疾病的超声诊断 (超声科)
- 服务精神:马里奥特之路
- 《建筑施工安全检查标准》JGJ59-2011图解
- 华为大学人才培养与发展实践
- 医疗垃圾废物处理课件
- 公路工程基本建设项目概算、预算编制办法
- 护理岗位管理与绩效考核-PPT课件
- 电力变压器损耗水平代号的确定
评论
0/150
提交评论