⒈教学内容线性表逻辑结构线性表的顺序存储及运算实现.pptx
《⒈教学内容线性表逻辑结构线性表的顺序存储及运算实现.pptx》由会员分享,可在线阅读,更多相关《⒈教学内容线性表逻辑结构线性表的顺序存储及运算实现.pptx(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年2月14日数据结构讲义12.1 线性表的逻辑结构线性表的逻辑结构线性表的定义线性表的基本操作第1页/共46页2023年2月14日数据结构讲义22.1.1 线性表的定义线性表是一种线性结构。线性结构的特点是数据元素之间是一种线性关系,数据元素“一个接一个的排列”。在一个线性表中数据元素的类型是相同的,或者说线性表是由同一类型的数据元素构成的线性结构。线性表是具有相同数据类型的n(n=0)个数据元素的有限序列,通常记为:(a1,a2,ai-1,ai,ai+1,an)其中n为表长,n0 时称为空表。表中相邻元素之间存在着顺序关系。将 ai-1 称为 ai 的直接前趋,ai+1 称为 ai
2、的直接后继。就是说:对于ai,当 i=2,.,n 时,有且仅有一个直接前趋 ai-1.,当i=1,2,.,n-1 时,有且仅有一个直接后继 ai+1,而 a1 是表中第一个元素,它没有前趋,an 是最后一个元素无后继。需要说明的是:ai为序号为 i 的数据元素(i=1,2,n),通常我们将它的数据类型抽象为datatype,datatype根据具体问题而定,如在学生情况信息表中,它是用户自定义的学生类型;在字符串中,它是字符型;等等。第2页/共46页2023年2月14日数据结构讲义32.1.2 线性表的基本操作线性表初始化:Init_List(L)初始条件:表L不存在 操作结果:构造一个空的线
3、性表 求线性表的长度:Length_List(L)初始条件:表L存在 操作结果:返回线性表中的所含元素的个数取表元:Get_List(L,i)初始条件:表L存在且1=i=Length_List(L)操作结果:返回线性表L中的第个元素的值或地址按值查找:Locate_List(L,x),是给定的一个数据元素。初始条件:线性表L存在 操作结果:返回在L中首次出现的值为的那个元素的序号或地址,称为查找成功;否则,在L中未找到值为的数据元素,返回一特殊值表示查找失败。插入操作:Insert_List(L,i,x)初始条件:线性表L存在,插入位置正确(1=i=n+1,为插入前的表长)。操作结果:在线性表
4、L的第 i 个位置上插入一个值为 x 的新元素,这样使原序号为 i,i+1,.,n 的数据元素的序号变为 i+1,i+2,.,n+1,插入后表长=原表长+1。删除操作:Delete_List(L,i)初始条件:线性表L存在,1=i=n。操作结果:在线性表L中删除序号为i的数据元素,删除后使序号为 i+1,i+2,.,n 的元素变为序号为 i,i+1,.,n-1,新表长原表长。需要说明的是:某数据结构上的基本运算,不是它的全部运算,而是一些常用的基本的运算,而每一个基本运算在实现时也可能根据不同的存储结构派生出一系列相关的运算来。在上面各操作中定义的线性表仅仅是一个抽象在逻辑结构层次的线性表,尚
5、未涉及到它的存储结构。第3页/共46页2023年2月14日数据结构讲义42.2 线性表的顺序存储及运算实现线性表的顺序存储及运算实现线性表的顺序存储顺序表上基本运算的实现顺序表应用举例第4页/共46页2023年2月14日数据结构讲义52.2.1 线性表的顺序顺序存储线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称其为顺序表。设 a的存储地址为Loc(a),每个数据元素占d个存储地址,则第i个数据元素的地址为:Loc(ai)=Loc(a)+(i-1)*d 1In从结构性上考虑,通常将 data 和 last 封装成一个结构作为顺序表的类型:
6、typedef struct datatype dataMAXSIZE;int last;SeqList;第5页/共46页2023年2月14日数据结构讲义62.2.2 顺序表上基本运算的实现 顺序表的初始化顺序表的初始化 顺序表的初始化即构造一个空表,对表是一个加工型的运算,因此,将 L设为指针参数,首先动态分配存储空间,然后,将表中 last 指针置为1,表示表中没有数据元素。第6页/共46页2023年2月14日数据结构讲义7插入运算插入运算 线性表的插入是指在表的第i个位置上插入一个值为 x 的新元素:第7页/共46页2023年2月14日数据结构讲义8插入算法的时间性能分析 顺序表上的插入
7、运算,时间主要消耗在了数据的移动上,在第i个位置上插入 x,从 ai 到 an 都要向下移动一个位置,共需要移动 ni1个元素,而 i 的取值范围为:1 i n+1,即有 n1个位置可以插入。设在第i个位置上作插入的概率为Pi,则平均移动数据元素的次数:设:Pi=1/(n+1),即为等概率情况,则:这说明:在顺序表上做插入操作需移动表中一半的数据元素。显然时间复杂度为(n)。第8页/共46页2023年2月14日数据结构讲义9删除运算删除运算 线性表的删除运算是指将表中第 i 个元素从线性表中去掉。第9页/共46页2023年2月14日数据结构讲义10删除算法的时间性能分析与插入运算相同,其时间主
8、要消耗在了移动表中元素上,删除第i个元素时,其后面的元素 ai+1an 都要向上移动一个位置,共移动了 n-i 个元素,所以平均移动数据元素的次数:在等概率情况下,pi=1/n,则:这说明顺序表上作删除运算时大约需要移动表中一半的元素,显然该算法的时间复杂度为(n)。第10页/共46页2023年2月14日数据结构讲义11按值查找按值查找 线性表中的按值查找是指在线性表中查找与给定值x相等的数据元素。本算法的主要运算是比较。显然比较的次数与x在表中的位置有关,也与表长有关。平均比较次数为(n+1)/2,时间性能为O(n)。第11页/共46页2023年2月14日数据结构讲义122.2.3 顺序表应
9、用举例 例2.1 将顺序表(a1,a2,.,an)重新排列为以 a1 为界的两部分:a1 前面的值均比 a1 小,a1 后面的值都比 a1 大。划分的方法有多种,下面介绍的划分算法其思路简单,性能较差。基本思路:从第二个元素开始到最后一个元素,逐一向后扫描:当前数据元素 aI 比 a1 大时,表明它已经在 a1 的后面,不必改变它与 a1 之间的位置,继续比较下一个。当前结点若比 a1 小,说明它应该在 a1 的前面,此时将它上面的元素都依次向下移动一个位置,然后将它置入最上方。第12页/共46页2023年2月14日数据结构讲义13总的移动次数为:即最坏情况下移动数据时间性能为()。第13页/
10、共46页2023年2月14日数据结构讲义14例2.2 有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。算法思路:依次扫描通过A和B的元素,比较当前的元素的值,将较小值的元素赋给C,如此直到一个线性表扫描完毕,然后将未完的那个顺序表中余下部分赋给C即可。C的容量要能够容纳A、B两个线性表相加的长度。第14页/共46页2023年2月14日数据结构讲义15算法的时间性能是O(m+n),其中m是A的表长,n是B的表长。第15页/共46页2023年2月14日数据结构讲义16例2.3 比较两个线性表的大小。两个线性表的比较依据下列方法
11、:设A、B是两个线性表,均用向量表示,表长分别为m和n。A和B分别为 A 和 B 中除去最大共同前缀后的子表。例如A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),两表最大共同前缀为(x,y,y,z)。则A=(x,z),B=(y,x,x,z),若A=B=空表,则A=B;若A=空表且B空表,或两者均不空且A首元素小于B首元素,则AB。算法思路:首先找出A、B的最大共同前缀;然后求出A和B,之后在按比较规则进行比较,AB 函数返回1;A=B返回0;Anext=p-next;p-next=s;注意:两个指针的操作顺序不能交换。第26页/共46页2023年2月14日数据结构讲义2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学内容 线性 逻辑 结构 顺序 存储 运算 实现
限制150内