数据结构课件第2章线性表A.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构课件第2章线性表A.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 线性
- 资源描述:
-
1、1上堂课要点回顾上堂课要点回顾数据结构课程数据结构课程涉及数学、计算机硬件和计涉及数学、计算机硬件和计算机软件算机软件数据结构定义数据结构定义指互相有关联的数据元素的指互相有关联的数据元素的集合,用集合,用D_S=( D, S ) 表示。数据结构内容数据结构内容数据的逻辑结构、存储结构数据的逻辑结构、存储结构和运算和运算 算法效率指标算法效率指标时间效率和空间效率时间效率和空间效率 2数据结构课程的内容数据结构课程的内容逻辑结构唯一逻辑结构唯一存储结构不唯一存储结构不唯一运算的实现依赖运算的实现依赖于存储结构于存储结构3近近3周周上课上课内容内容第第2 2章章 线性表线性表第第3 3章章 栈和
2、队列栈和队列第第4 4章章 串串第第5 5章章 数组和广义表数组和广义表 线性结构线性结构若结构是非空有限集,则有且仅有一个开始结若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。直接前趋和一个直接后继。可表示为可表示为:(:(a1 , a2 , , an) 线性结构的定义:线性结构的定义:(逻辑、存储(逻辑、存储和运算)和运算)4第二章第二章 线性表线性表 学习指南学习指南【学习目标【学习目标】1. 了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储
3、结构是顺序存储结构和链式存储结构。用前者表示的线性表简称为顺序表顺序表,用后者表示的线性表简称为链表链表。2. 熟练掌握这两类存储结构的描述方法以及线性表的基本操作在这两种存储结构上的实现。3. 能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。4. 结合线性表类型的定义增强对抽象数据类型的理解。 5【重点和难点【重点和难点】链表是本章的重点和难点。扎实的指针操作针操作和内内存动态分配存动态分配的编程技术是学好本章的基本要求,分清链表中指针 p 和结点 *p 之间的对应关系,区分链表中的头结点、头指针和首元结点的不同所指以及循环链表、双向链表的特点等。【知识点【知识
4、点】线性表、顺序表、链表【学习指南【学习指南】 本章建议完成的算法设计题为:2.11,2.21,2.19,2.22,2.24,2.27,2.28,2.38 第二章第二章 线性表线性表 学习指南学习指南(续)6线性结构的特点:线性结构的特点: 只有一个首结点和尾结点;只有一个首结点和尾结点; 除首尾结点外,其他结点只有一个直接前驱和一除首尾结点外,其他结点只有一个直接前驱和一个直接后继。个直接后继。线性结构表达式:(线性结构表达式:(a1 , a2 , , an) 线性结构包括线性表、堆栈、队列、字符串、数线性结构包括线性表、堆栈、队列、字符串、数组等等,其中,最典型、最常用的是组等等,其中,最
5、典型、最常用的是-线性表线性表简言之,线性结构反映结点间的逻辑关系是简言之,线性结构反映结点间的逻辑关系是 一对一一对一 的的见第见第2章章7第二章第二章 线性表线性表 2.1 2.1 线性表的类型定义线性表的类型定义 2.2 2.2 线性表的顺序表示和实现线性表的顺序表示和实现 2.3 2.3 线性表的链式表示和实现线性表的链式表示和实现 2.3.1 2.3.1 线性链表线性链表 2.3.2 2.3.2 循环链表循环链表 2.3.3 2.3.3 双向链表双向链表 2.4 2.4 一元多项式的表示及相加一元多项式的表示及相加8线性表:线性表:由一组数据组成,线性表或者是一个空表,由一组数据组成
6、,线性表或者是一个空表,或者可以写成(或者可以写成(a a1 1,a,a2 2, ,a ai i, ,a an n), ,其中其中a ai i是取自某个是取自某个集合集合S S的元素。当的元素。当1in1in时,数据元素时,数据元素a ai-1i-1称为数据元素称为数据元素a ai i的直接前驱,而称的直接前驱,而称a ai+1i+1为为a ai i的直接后继。线性表中数的直接后继。线性表中数据元素的个数称为该线性表的长度。据元素的个数称为该线性表的长度。2.1 线性表的类型定义线性表的类型定义 9(a1, a2, ai-1,ai, ai1 ,, an)1. 线性表的定义:线性表的定义:用数据
7、元素的有限序列表示用数据元素的有限序列表示n=0时称为时称为数据元素数据元素线性起点线性起点ai的直接前趋的直接前趋ai的直接后继的直接后继下标,下标,是元素的是元素的序号,表示元素序号,表示元素在表中的位置在表中的位置n为元素总个为元素总个数,即表长数,即表长空表空表线性终点线性终点10形式化定义:形式化定义:Linearlist = (D, R)其中:其中:1, 2 , 1,|,0, 1, 1 , 0,|0110niDaaaaRnniDaaDiiiiiiD0为某个数据对象的集合为某个数据对象的集合N为线性表长度为线性表长度11线性表的主要操作 初始化 求长度 取元素 定位 插入 删除12对
8、线性表可进行如下基本运算:对线性表可进行如下基本运算: InitList(&LInitList(&L) ):构造一个空的线性表构造一个空的线性表L L。ListLength(&LListLength(&L) ):返回返回L L数据元素的个数。数据元素的个数。GetElem(L,i,&eGetElem(L,i,&e) ):用用e e返回返回L L中第中第i i个数据元素的值。个数据元素的值。ListInsert(&L,i,eListInsert(&L,i,e) ):在在L L中第中第i i个位置前插入新的数据元素个位置前插入新的数据元素e e,L L的长度加的长度加1 1。ListDelete(
9、&L,i,&eListDelete(&L,i,&e) ):删去删去L L中第中第i i个元素,用个元素,用e e返回其值,返回其值,L L的长度减的长度减1 1。 PriorElem(L,cur_e,&pre_ePriorElem(L,cur_e,&pre_e) ):用用pre_epre_e返回数据元素返回数据元素cur_ecur_e的前驱,如果存在的前驱,如果存在的话。的话。 NextElem(L,cur_e,&next_eNextElem(L,cur_e,&next_e) ):用用next_enext_e返回数据元素返回数据元素cur_ecur_e的后继,如果存在的后继,如果存在的话。的话
10、。 LocateElem(L,e,compareLocateElem(L,e,compare()():返回返回L L中第一个与中第一个与e e满足关系满足关系compare()compare()的数据元的数据元素的位序。素的位序。0 0表示这种元素不存在。表示这种元素不存在。13例例1 分析分析26 个英文字母组成的英文表个英文字母组成的英文表 ( A, B, C, D, , Z)学号学号姓名姓名性别性别年龄年龄班级班级2001011810205于春梅于春梅女女 182001级电信级电信016班班2001011810260何仕鹏何仕鹏男男 182001级电信级电信017班班2001011810
11、284王王 爽爽女女 182001级通信级通信011班班2001011810360王亚武王亚武男男 182001级通信级通信012班班: :例例2 分析学生情况登记表分析学生情况登记表数据元素都是记录数据元素都是记录; 元素间关系是线性元素间关系是线性数据元素都是字母数据元素都是字母; 元素间关系是线性元素间关系是线性同一线性表中的元素必定具有相同特性同一线性表中的元素必定具有相同特性14例3、学生健康情况登记表如下:姓 名学 号性 别年龄 健康情况王小林790631 男 18 健康陈 红790632 女 20 一般刘建平790633 男 21 健康张立立790634 男 17 神经衰弱 .
12、. .15例4、一副扑克的点数 (2,3,4,J,Q,K,A) 16从以上例子可看出线性表的逻辑特征是:从以上例子可看出线性表的逻辑特征是:在非空的线性表,有且仅有一个开始结点在非空的线性表,有且仅有一个开始结点a a1 1,它,它没有直接前趋,而仅有一个直接后继没有直接前趋,而仅有一个直接后继a a2 2;有且仅有一个终端结点有且仅有一个终端结点a an n,它没有直接后继,而,它没有直接后继,而仅有一个直接前趋仅有一个直接前趋a a n-1n-1;其余的内部结点其余的内部结点a ai i(2in-1)(2in-1)都有且仅有一个都有且仅有一个直接前趋直接前趋a a i-1i-1和一个直接后
13、继和一个直接后继a a i+1i+1。 17 线性表是一种典型的线性结构。线性表是一种典型的线性结构。数据的运算是定义在逻辑结构上的,而运算数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。的具体实现则是在存储结构上进行的。抽象数据类型的定义为:抽象数据类型的定义为:P P191918 算法2.1 例2-1 利用两个线性表LA和LB分别表示两个集合A和B,现要求一个新的集合A=AB。 void union(List &La,List Lb) La-len=ListLength(La); Lb-len=ListLength(Lb); for(I=1;I=Lb-len;I+)
展开阅读全文