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