java版数据结构 第2章 线性表.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《java版数据结构 第2章 线性表.ppt》由会员分享,可在线阅读,更多相关《java版数据结构 第2章 线性表.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 线性表教学目标:教学目标:l掌握线性表的基本概念掌握线性表的基本概念l掌握顺序表和链表的存储原理掌握顺序表和链表的存储原理l线性表的应用线性表的应用重点:重点:l线性表的存储线性表的存储难点:难点:l线性表的操作及其应用线性表的操作及其应用线性表线性表的的基本概念基本概念线性表是最简单也是最常用的一种线性结构线性表是最简单也是最常用的一种线性结构。线性表的线性表的定义:定义:线性表是由同一类型数据元线性表是由同一类型数据元素组成的有限序列。其中第一个元素无前驱结点,素组成的有限序列。其中第一个元素无前驱结点,最后一个元素无后继结点,除第一个和最后一个最后一个元素无后继结点,除第一个和最
2、后一个元素外其余元素均有且仅有一个直接前驱和直接元素外其余元素均有且仅有一个直接前驱和直接后继结点。后继结点。线性表线性表的的基本概念基本概念线性表中元素的个数称为该表的长度,线性表中元素的个数称为该表的长度,如果长度值为如果长度值为0则称表为空表。则称表为空表。线性表常见操作有插入、删除、查找、线性表常见操作有插入、删除、查找、修改等操作。修改等操作。线性表的逻辑结构 线性表线性表(Linear List):是由:是由n(n 0)个数个数据元素据元素(结点结点)a1,a2,an组成的有限序组成的有限序列。该序列中的所有结点具有相同的数据类列。该序列中的所有结点具有相同的数据类型。其中数据元素
3、的个数型。其中数据元素的个数n称为线性表的长度。称为线性表的长度。A=(a1,a2,ai,ai+1,an)(n 0),其,其中称中称ai是是ai+1的直接前驱元素,的直接前驱元素,ai+1是是ai的直的直接后继元素。接后继元素。线性表的逻辑结构 线性表中的数据元素线性表中的数据元素ai所代表的具体含义所代表的具体含义随具体应用的不同而不同,在线性表的定义中,随具体应用的不同而不同,在线性表的定义中,只不过是一个抽象的表示符号。只不过是一个抽象的表示符号。l线性表中的结点可以是线性表中的结点可以是单值元素单值元素(每个元素每个元素只有一个数据项只有一个数据项)。l线性表中的结点可以是线性表中的结
4、点可以是记录型记录型元素,每个元元素,每个元素含有多个数据项素含有多个数据项,每个项称为结点的一个,每个项称为结点的一个域域。每个元素有一个可以唯一标识每个结点。每个元素有一个可以唯一标识每个结点的的数据项组数据项组,称为,称为关键字关键字。线性表的逻辑结构例例1:26个英文字母组成的字母表:个英文字母组成的字母表:(A,B,C、Z)例例2:某校从某校从1978年到年到1983年各种型号的计年各种型号的计算机拥有量的变化情况:算机拥有量的变化情况:(6,17,28,50,92,188)例例3:一副扑克的点数一副扑克的点数 (2,3,4,J,Q,K,A)例例4 4:某校某校20012001级同学
5、的基本情况:级同学的基本情况:(20014141012001414101,张里户张里户,男男,06/24/1983)06/24/1983),(20014141022001414102,张化司张化司,男男,08/12/1984)08/12/1984),(20014141032001414103,李利辣李利辣,女女,08/12/1984)08/12/1984)l 若线性表中的结点是按值若线性表中的结点是按值(或按关键字值或按关键字值)由小到大由小到大(或由大到小或由大到小)排列的,称线性表是有排列的,称线性表是有序的。序的。l 线性表是一种相当灵活的数据结构,其长线性表是一种相当灵活的数据结构,其
6、长度可根据需要增长或缩短。度可根据需要增长或缩短。l 对线性表的数据元素可以访问、插入和删对线性表的数据元素可以访问、插入和删除。除。线性表的抽象数据类型定义ADT Listl数据对象:数据对象:D=ai|ai ElemSet,i=1,2,n,n 0 l数据关系:数据关系:R=|ai-1,ai D,i=2,3,n l基本操作:基本操作:lInitList(&L)操作结果:构造一个空的线性表操作结果:构造一个空的线性表L;llength(L)初始条件:线性表初始条件:线性表L已存在;已存在;操作结果:返回表操作结果:返回表L中元素的个数;中元素的个数;lquery(L,i,&e)初始条件:线性表
7、初始条件:线性表L存在,存在,1 i ListLength(L);操作结果:用操作结果:用e返回返回L中第中第i个数据元素的值;个数据元素的值;lInsert(L,i,e)初始条件:线性表初始条件:线性表L存在,存在,1 i ListLength(L)+1;操作结果:在线性表操作结果:在线性表L中的第中的第i个位置插入元素个位置插入元素e;l ADT List线性表基本操作isEmptylengthinsertdeletequery线性表的存储结构分为顺序存储结构和链式存储结构:分为顺序存储结构和链式存储结构:l顺序存储结构:顺序表顺序存储结构:顺序表l链式存储结构:链表链式存储结构:链表顺序
8、表定义:定义:顺顺序表是指按序表是指按顺顺序存序存储结储结构存构存储储的的线线性表,性表,顺顺序表中的序表中的结结点在内存中占用一段点在内存中占用一段连连续续的存的存储单储单元。元。顺序表顺序表存储结存储结构如图构如图所示:所示:Loc(ai)=add+(i-1)len (1in)顺序表定义实例学生表的结构如下学生表的结构如下 2.1.2顺序表定义实例学生表的顺序表抽象定义:学生表的顺序表抽象定义:ADT List/List为线性表名,为线性表名,ADT为为abstrct data type的缩写的缩写 数据元素如下:数据元素如下:Date=ai|i=1,2,n(n 0)/表数据元素的描述表数
9、据元素的描述 数据元素关系如下:数据元素关系如下:Relation=|ai,ai+1 Date/表元素间关系描述表元素间关系描述 表基本操作如下:表基本操作如下:/表的基本操作表的基本操作 boolean isEmpty(List ls)/判断表判断表ls是否为空表,空表返回是否为空表,空表返回true,否则返回否则返回false int length(List ls)/返回表返回表ls的元素的个数,即表的长度的元素的个数,即表的长度 insert(List ls,int i,Type data)/在表在表ls的第的第i个位置前插入新数据元素个位置前插入新数据元素data Type delet
10、e(List ls,int i)/删除表删除表ls第第i个位置的数据元素,并返回该数据元素个位置的数据元素,并返回该数据元素 Type query(List ls,int i)/查找表查找表ls第第i个位置的数据元素,并返回该数据元素个位置的数据元素,并返回该数据元素 线性表的插入操作在线性表在线性表 L=(a1,a i-1,ai,ai+1,an)中中的第的第i(1 i n)个位置上插入一个新结点个位置上插入一个新结点e,使其,使其成为线性表成为线性表:L=(a1,a i-1,e,ai,ai+1,an)实现步骤:实现步骤:(1)(1)将线性表将线性表L中的中的第第i个至第个至第n个结点后移一个
11、个结点后移一个位置。位置。(2)(2)将结点将结点e插入到结点插入到结点ai-1之后之后。(3)(3)线性表长度加线性表长度加1。顺序表的插入(insert(i,obj))例在张阳同学前插入郑克龙学生信息的学生表如下图所示:插入操作时间复杂度分析时间复杂度分析:时间复杂度分析:在线性表在线性表L中的中的第第i个个元素之前插入新结点,元素之前插入新结点,其时间主要耗费在表中结点的移动操作上,因此,其时间主要耗费在表中结点的移动操作上,因此,可用结点的移动来估计算法的时间复杂度。可用结点的移动来估计算法的时间复杂度。插入操作时间复杂度分析 设设在线性表在线性表L中的中的第第i个个元素之前插入结点的
12、元素之前插入结点的概率为概率为Pi,不失一般性,设各个位置插入是等概率,不失一般性,设各个位置插入是等概率,则则Pi=1/(n+1),而插入时移动结点的次数为,而插入时移动结点的次数为n-i+1。总的平均移动次数:总的平均移动次数:Einsert=pi*(n-i+1)(1 i n)Einsert=n/2。插入操作时间复杂度分析 即即在顺序表上做插入运算,平均要移动表上在顺序表上做插入运算,平均要移动表上一半结点。当表长一半结点。当表长n较大时,算法的效率相当低。较大时,算法的效率相当低。因此算法的平均时间复杂度为因此算法的平均时间复杂度为O(n)。顺序表的删除在线性表在线性表 L=(a1,a
13、i-1,ai,ai+1,an)中删除结点中删除结点ai(1 i n),使其成为线性表,使其成为线性表:L=(a1,ai-1,ai+1,an)实现步骤:实现步骤:(1)(1)将线性表将线性表L中的中的第第i+1个至第个至第n个结点依个结点依此向前移动一个位置。此向前移动一个位置。(2)(2)线性表长度减线性表长度减1。顺序表的删除(delete(i))删除王丽同学节点后的学生表如下图所示:删除线性表删除线性表L中的中的第第i个个元素,其时间元素,其时间主要耗费在表中结点的移动操作上,因此,主要耗费在表中结点的移动操作上,因此,可用结点的移动来估计算法的时间复杂度。可用结点的移动来估计算法的时间复
14、杂度。删除操作时间复杂度分析 设设在线性表在线性表L中中删除第删除第i个个元素的概率为元素的概率为Pi,不失一般性,设删除各个位置是等概率,不失一般性,设删除各个位置是等概率,则则Pi=1/n,而删除时移动结点的次数为,而删除时移动结点的次数为n-i。则总的平均移动次数:则总的平均移动次数:Edelete=pi*(n-i)(1 i n)Edelete=(n-1)/2。插入操作时间复杂度分析 即即在顺序表上做删除运算,平均要移动在顺序表上做删除运算,平均要移动表上一半结点。当表长表上一半结点。当表长n较大时,算法的效较大时,算法的效率相当低。因此算法的平均时间复杂度为率相当低。因此算法的平均时间
15、复杂度为O(n)。插入操作时间复杂度分析顺序表类顺序表类 LineList代码代码 类包含成员变量和成员函数。成员变量用类包含成员变量和成员函数。成员变量用来表示抽象数据类型中定义的数据集合,成来表示抽象数据类型中定义的数据集合,成员函数用来表示抽象数据类型中定义的操作员函数用来表示抽象数据类型中定义的操作集合。集合。顺序表类的三个成员变量data:存储数据元素的数组:存储数据元素的数组length:表示数组中当前存储的数据元素个数:表示数组中当前存储的数据元素个数maxLength:表示数组允许的最大数据元素个数:表示数组允许的最大数据元素个数要求必须满足要求必须满足size=maxSize
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java版数据结构 第2章 线性表 java 数据结构 线性
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内