数据结构第二章线性表.ppt
《数据结构第二章线性表.ppt》由会员分享,可在线阅读,更多相关《数据结构第二章线性表.ppt(24页珍藏版)》请在三一办公上搜索。
1、1,数据结构 第二章 线性表,重庆一中 葛静,2,数据元素之间满足线性关系的表称为线性表,是一种最基本、最简单的数据结构类型。本章讨论线性表的逻辑和存储结构、相关算法的实现以及线性表应用举例。2.1线性表的定义及基本操作2.1.1 定义:线性表(Linear List)是若干数据元素的一个线性序列,记为:L=(a1,ai-1aiai+1an)其中:L为表名,ai(1in)为数据元素;n为表长,n0 时,L为非空表,否则为空表。2.1.2 线性表的逻辑结构和特征 线性表L可用二元组形式描述:L=(D,R)数据元素集合:D=ai|aidatatype,i=1,2,n,n0关系集合:R=|ai,ai
2、+1D,1in-1表长n=0时,L为空表;关系符在这里称为有序对,表示任意相邻的两个元素之间的一种先后次序关系,称ai是ai+1的直接前驱,ai+1是ai的直接后继,当表长n1时,关系集R为空集。,3,例2-1 线性表的例子,L1=(A,B,Z)元素为字符;L2=(6,7,105)元素为整数;学生记录表:线性表的特征:对非空表,a1是表头,无前驱;an是表尾,无后继;其它的每个元素ai有且仅有一个直接前驱(ai-1)和一个直接后继(ai+1)。2.1.3 线性表的抽象数据类型表示 设线性表 L=(a1,a2,an),对 L的抽象数据类型表示:,a1a2.a32,4,线性表的抽象数据类型表示,A
3、DT List 数据元素集:D=ai|aidatatype,i=1,2,n,n0数据关系集:R=|ai,ai+1D,1in-1 基本操作集:P(置表空、求表长、插入、删除、查找一个元素等),5,2.2.1 顺序表,若将线性表L=(a0,a1,an-1)中的各元素依次存储于计算机一片连续的存储空间,如图2.2所示。这种机内表示为线性表的顺序存储结构(顺序表)。地址:b:占d个单元 b+d:设Loc(ai)为ai的地址,Loc(a1)=b,则:Loc(a2)=b+1*d b+(i-1)*d:.Loc(ai)=b+(i-1)*d b+(n-1)*d:图2.2顺序表的特点:(1)逻辑上相邻的元素 ai
4、,ai+1,存储位置也是相邻的;(2)对ai的存取为随机存取或按地址存取。(3)存储密度高。存储密度D=(数据结构中元素所占存储空间)/(整个数据结构所占空间)。顺序表的不足:对表的插入和删除等运算的时间复杂度较差。,6,线性表的顺序存储,Type list=record vec:array1.m0 of elemtype;len:integer;End;Var L:list;1、setnull(L)L.len:=0;操作结果:构造一个空的线性表L。2、length(L)return(L.Len);初始条件:线性表L存在。操作结果:返回L中的元素个数。3、向线性表的第i个元素插入一个元素步骤:
5、(1)检查存储空间是否已经满,若满,则“溢出”。(2)检查i是否超范围1=i=n+1,若是,则“超出范围”(3)将线性表中第i个元素和后面所有元素均后移一位。(4)将新元素写在第i个位置上。(5)线性表长度加1.,7,线性表的抽象数据类型表示,3、向线性表的第i个元素插入一个元素的算法描述Insert(L,i,x);Begin if L.len=m0 then writeln(overflow);if(iL.len+1)then writeln(out of range);for j:=L.len downto i do L.vecj+1:=L.vecj;L.veci=x;L.len:=L.l
6、en+1;End;算法复杂度分析:算法第1、2步根据情况可省略。时间复杂度主要取决于第3步,即for循环的次数,也就是向后移动的元素个数。当i=n+1时,最好情况,元素不移动,当i=1时,最坏情况,移动n次。假定在线性表的任何位置上插入元素的概率相同,为pi=1/(n+1),1=i=n+1,则元素平均移动的次数为:Pi(n+n-1+n-2+0)=pi(n(n+1)/2)=n/2故最坏和平均O(n),8,线性表的抽象数据类型表示,4、删除线性表的第i个元素算法步骤:(1)检查1n)then writeln(out of range);x:=L.vexi;for j:=i+1 to L.len d
7、o L.vecj-1:=L.vecj;L.len:=L.len-1;End;时间复杂度分析:最坏,i=n时,不移动元素,i=1时,移动n-1个元素。删除任意元素等概率情况下1/n,1/n(0+1+2+n-1)=1/n(n(n-1)/2)=(n-1)/2故最坏和平均O(n),9,线性表的抽象数据类型表示,5、删除给定值等于x的第一个元素。算法步骤:(1)从线性表的起始元素开始,根X 比较,直到X等于某个元素值(查找成功),或者查完所有元素仍找不到(查找失败)。(2)若查找失败,则“没有找到”错误处理。(3)删除其值等于x的元素。(4)线性表长度减1;算法描述:Delete(L,x);Begin
8、i:=1;while(ix)do inc(i);if in then writeln(not find)else for j:=i+1 to L.len do L.vecj-1:=L.vecj;dec(L.len);End;O(n),10,线性表的操作,以上运算是对线性表L施加的一些基本运算,对线性表L的运算还有:合并、拆分、复制、排序等等。例2-2 设线性表La=(a1a2,am),Lb=(b1b2,bn),求LaLb=La,如图2.1所示。算法思路:依次取Lb中的bi(i=1,2,n),若bi不在La中,则将其插入。算法描述:procedure Union(La,Lb:list);begi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第二 线性
链接地址:https://www.31ppt.com/p-5986065.html