数据结构课件-线性表顺序表_第1页
数据结构课件-线性表顺序表_第2页
数据结构课件-线性表顺序表_第3页
数据结构课件-线性表顺序表_第4页
数据结构课件-线性表顺序表_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、线 性 表程序 = 数据结构+算法数据结构的研究内容:数据结构的研究内容: 逻辑结构:数据元素间的客观联系 存储结构:数据在计算机内部的存储方法 算法研究数据结构线性结构:线性表,栈,队列非线性结构:树,图 在各种程序设计与软件开发中都要涉及到对数据的组织、存储、管理和处理在环境领域:不同环境监测点的监测指标统计在土地领域:不同宗地的属性在测绘领域:外业测绘信息的存储,各测点三维坐 标的存储 最常见的数据组织方式:表格形式的数据编号名称so2含量 水质指标悬浮物指标宗地号周长面积使用者土地等级点号等级xyh学号姓名性别籍贯年龄成绩2.1 线性表的基本概念和运算线性表的基本概念和运算2.1.1

2、逻辑结构定义逻辑结构定义定义定义:线性:线性表是由n(n0)个数据元素数据元素a1,a2,,an构成的有限序列有限序列。n为表的长度,n=0时称为空表。非空的线性表(n0)记作( a1,a2,,an )。 数据元素可以有不同的含义,但同一线性表中的元素必须具有相同的特性。9119辽宁男李铁0220年龄87北京男杨晨01成绩籍贯性别姓名学号9520上海男祁宏30在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2(或没有后继);有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前趋a n-1 (或没有前趋) ;其余的内部结点ai(2in-1)都有且仅有一个直接前

3、趋a i-1和一个直接后继a i+1。2.1.2 线性表的线性表的adt表示表示adt list数据对象:l=ai | ai元素集合,i=1,2,n,n0数据关系:r= ai-1,ai | ai-1,ai元素集合,i=1,2,n基本操作:构造空表initlist(&l)销毁线性表destroylist(&l)清空表 clearlist(&l)求长度 listlength(l)取结点 getelem(l, index,&e)定位 locateelem(l,x)插入 insertelem(&l,index,e)删除deleteelem(&l,index,&e)取直接前趋 priorelem(l,

4、cur_e,&prior_e )取直接后继 nextelem(l, cur_e,&next_e )2.1.3 线性表的运算线性表的运算清空表 clearlist(&l)学号成绩clearlist(list); 取结点 getelem(l, index,&e) getelem (list,2,&e ) 序号成绩017802900384定位 locateelem(l,x) locateelem (list, 84) = 3学号成绩017802900384 插入 insertelem(&l,index,e):在index位置插入值为e的元素 insertelem(list, 3, 87)学号成绩01

5、7802900384308390027801成绩学号833184048703 删除deleteelem(&l,index) deleteelem (list,3)学号 成绩017802900384298390027801成绩学号83308404870390027801成绩学号83308404 取直接前趋 priorelem(l, cur_e,&prior_e) 取直接后继 nextelem(l, cur_e,&next_e)90027801成绩学号833084048703prior(l, 87)next(l, 87)对线性表的所有复杂操作都可以由以上操作完成对线性表的所有复杂操作都可以由以上操

6、作完成e.g 清除线性表l中多余的重复结点 从i=1开始,每次取第i个元素getelem (l,i,&e) 对第i个元素后的所有元素进行比较,若值相同则删除 判断完后将i+,继续执行,直到i=listlengh(l)purge(linear_list list) int i =1, j, x, y; while(ilistlength(list) getelem(list, i,&x); j=i+1; while(j”,不用“.”说明:用结构体类型定义指针 struct student stu-1; struct student *p; p=&stu-1; 以下三种形式等价: (*p).成员名

7、 p-成员名 结构体变量.成员名如(*p).age, p-age, stu-1.age等价 void clearlist(sequencelist * plist) plist - length = 0; void initlist(sequencelist * plist) plist - length = 0; 2 插入运算序号成绩017802900384308390027801成绩序号833184048703a1a2ai-1aian-1an移动后a1a2ai-1aiai+1an插入前插入x下标0 1i-2i-1in-1lasta1a2ai-1xaian-1an插入后lastinserte

8、lem(l, i, x)1 if ( ilength +1 ) return wrong;2 for j=n to index step (-1)3 lj+1 = lj4 end5 li=x6 length=length+17 returna1a2ai-1aian-1an移动后a1a2ai-1aiai+1an插入前插入x下标0 1i-2i-1in-1lastint insertelem(sequencelist *plist, int index , datatype x) if( plist-length = maxsize) return 0; /溢出 if( index plist-le

9、ngth+1) /位置不合法 return 0; for(int i = plist-length ; i= index ; i-) plist-datai= plist-datai-1;/元素后移 plist-dataindex -1 = x;/把值写入index位置 +plist-length;/修改length return 1; 3 删除运算序号 成绩017802900384298390027801成绩序号83308404870390027801成绩序号83308404a1a2ai-1ai+1an删除a1a2ai-1aiai+1an删除前删除x下标0 1i-2i-1in-1lasta1

10、a2ai-1ai+1ai+2an删除后last算法描述: deleteelem(l,i)1 if( i length) return wrong;2 for j=i to n-13 lj=lj+14 end(j)5 length=length-1int deleteelem(sequencelist * plist, int index) if( index plist-length) return 0; for( int i= index; i length; i+) plist-datai-1 = plist-datai; /元素前移 -plist-length; ;/修改length return 1; 3 算法分析时间主要用于移动元素,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论