数据结构与常用算法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构与常用算法课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 常用 算法 课件
- 资源描述:
-
1、第第7章章 数据结构与常用算法数据结构与常用算法7.1 数据结构的基本概念数据结构的基本概念7.2 线性表线性表及其存储结构及其存储结构7.3 栈和队列栈和队列7.4 树与二叉树树与二叉树7.5 查找算法查找算法7.6 排序算法排序算法7.1 数据结构的基本概念数据结构的基本概念7.1.1 基本术语基本术语(1)(1)数据数据:能被计算机识别、存储和加工处:能被计算机识别、存储和加工处理的符号的总称。理的符号的总称。计算机中可以操作的对象计算机中可以操作的对象(2)(2)数据元素数据元素:数据的基本单位。:数据的基本单位。在计算机中通常作为整体处理,也称为记录在计算机中通常作为整体处理,也称为
2、记录(3)(3)数据项数据项:数据元素的最小单位。:数据元素的最小单位。一个数据元素由若干个数据项组成一个数据元素由若干个数据项组成(4)(4)数据对象数据对象:相同性质数据元素的集合。:相同性质数据元素的集合。是数据的子集是数据的子集武汉科技大学计算机科学与技术学院7.1.1 基本术语基本术语数据对象、数据元素与数据项数据对象、数据元素与数据项一列整数一列整数2 2,3 3,5 5,-3-3,8 8,1212若干列整数若干列整数一个学生:学号、姓名、性别、入学成绩。一个学生:学号、姓名、性别、入学成绩。一个学生表:若干条学生记录一个学生表:若干条学生记录7.1.2 数据结构数据结构数据数据结
3、构:带结构:带结构结构的数据元素的集合。的数据元素的集合。数据元素之间相互有数据元素之间相互有关联关联例如,例如,3 3214214,65876587,9345 a1 9345 a1,a2a2,a3a3在在a1a1、a2a2和和a3a3之间存在之间存在“次序次序”关系关系、a2a3不等于不等于 6587,6587,3 3214,9345 a2,a1,214,9345 a2,a1,a3 a3 7.1.2 数据结构数据结构数据结构主要研究和讨论数据结构主要研究和讨论3 3个方面的问题:个方面的问题:数据集合中,各种数据元素之间所固有的逻辑数据集合中,各种数据元素之间所固有的逻辑关系,即数据的关系,
4、即数据的逻辑结构逻辑结构;在对数据进行处理时,各数据元素在计算机中在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的的存储关系,即数据的存储结构存储结构;对各种数据结构进行的对各种数据结构进行的运算运算,其中常用的有检,其中常用的有检索、插入、删除、排序等索、插入、删除、排序等7.1.2 数据结构数据结构1.1.数据的逻辑结构数据的逻辑结构指反映数据元素之间逻辑关系的数据结构。指反映数据元素之间逻辑关系的数据结构。两个要素:两个要素:一是数据元素的集合,通常记为一是数据元素的集合,通常记为D D;二是二是D D上的二元关系,它反映了上的二元关系,它反映了D D中各数据元素之间的中各数
5、据元素之间的前驱与后继关系,通常记为前驱与后继关系,通常记为R R。一个数据结构可以表示成一个数据结构可以表示成B=(D,R)B=(D,R),其中,其中B B表示数据结表示数据结构。构。通常把数据元素之间的这种固有的关系,简单地通常把数据元素之间的这种固有的关系,简单地用前驱与后继关系来描述。用前驱与后继关系来描述。例如家庭成员的数据结构可以表示成例如家庭成员的数据结构可以表示成B=(D,R)B=(D,R),其中,其中D=D=父亲,儿子,女儿父亲,儿子,女儿,R=R=,。7.1.2 数据结构数据结构1.1.数据的逻辑结构数据的逻辑结构通常有下面通常有下面3 3种基本结构种基本结构:线性结构线性
6、结构:结构中数据元素之:结构中数据元素之间存在间存在一个对一个一个对一个的关系。的关系。树形结构树形结构:结构中数据元素之:结构中数据元素之间存在间存在一个对多个一个对多个的关系。的关系。图形结构或网状结构图形结构或网状结构:结构中:结构中数据元素之间存在数据元素之间存在多个对多个多个对多个的的关系。关系。线性图形树形7.1.2 数据结构数据结构2.2.数据的存储结构数据的存储结构数据的逻辑结构在计算机数据的逻辑结构在计算机存储空间存储空间中的中的存放形式存放形式称为数据的存储结构(也称物理结构)。称为数据的存储结构(也称物理结构)。在数据的存储结构中,不仅要存放数据元素的信在数据的存储结构中
7、,不仅要存放数据元素的信息,还需要存放各数据元素之间的前驱和后继息,还需要存放各数据元素之间的前驱和后继关关系的信息系的信息。4 4种常见的存储结构种常见的存储结构:(1)(1)顺序存储结构顺序存储结构(2)(2)链式存储结构链式存储结构(3)(3)索引存储结构索引存储结构(4)(4)散列存储结构散列存储结构return7.2 线性表及其存储结构线性表及其存储结构7.2.1 线性表的基本概念线性表的基本概念通常,线性表是由通常,线性表是由n n(n n0)0)个数据元素个数据元素 a a1 1,a a2 2,a an n组成的一个有限序列。组成的一个有限序列。存在存在唯一的唯一的一个被称为一个
8、被称为“第一个第一个”的数据元素;的数据元素;存在存在唯一的唯一的一个被称为一个被称为“最后一个最后一个”的数据元的数据元素;素;除了第一个之外,表中的每个数据元素均只有除了第一个之外,表中的每个数据元素均只有一个一个前驱;前驱;除了最后一个之外,表中的每个数据元素均只除了最后一个之外,表中的每个数据元素均只有有一个一个后继。后继。线性表线性表的的数据元素,通常也称为数据元素,通常也称为节点节点。数据元素在线性表中的数据元素在线性表中的位置位置只取决于它们自只取决于它们自己的序号。己的序号。线性表中节点的个数线性表中节点的个数 n n 称为线性表的长度。称为线性表的长度。当当 n n=0=0
9、时,称为空表。时,称为空表。1.1.线性表的顺序存储线性表的顺序存储(顺序表)(顺序表)线性表中的所有元素所占的存储空间是连续的;线性表中的所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。序依次存放的。高级语言中,常用高级语言中,常用“一维数组一维数组”a(1:m)”a(1:m)表示这表示这种存储结构种存储结构武汉科技大学计算机科学与技术学院序号数据元素存储地址1a1ADR(a1)2a2ADR(a1)+kiaiADR(a1)(i1)knanADR(a1)(n1)k7.2.2 线性表的顺序存储及其运算线性表的顺序存储及
10、其运算2.2.顺序表的基本运算顺序表的基本运算(1)(1)顺序表的插入顺序表的插入(aiai 前插入前插入 x x)移动元素:移动元素:从最后一个(即第从最后一个(即第 n n个)元素开始,直到个)元素开始,直到第第 i i 个元素之间共个元素之间共 n-i+1 n-i+1 个元素依次向后移动一个个元素依次向后移动一个位置位置ajaj aj+1(j:aj+1(j:nini )插入新元素:插入新元素:将新元素将新元素 x x 插入到第插入到第 i i 个位置个位置x x aiai更新长度:更新长度:n+1n+1n n当当 n=m n=m 时,不能再插入,否则会时,不能再插入,否则会“上溢上溢”;
11、所以插入前要检查是否会所以插入前要检查是否会“上溢上溢”。序号 数据元素存储地址1a1ADR(a1)2a2ADR(a1)+kiaiADR(a1)(i1)knanADR(a1)(n1)k2.2.顺序表的基本运算顺序表的基本运算(2)(2)顺序表的删除顺序表的删除(删除删除aiai)移动元素:移动元素:从第从第 i+1 i+1 个元素开始,直到第个元素开始,直到第 n n 个元素个元素之间,共有之间,共有 n n i i 个元素依次向前移动一个位置。个元素依次向前移动一个位置。ajaj aj-1(j:aj-1(j:inin)更新长度:更新长度:n-1n-1n n当当 n=0 n=0 时不能再删除,
12、时不能再删除,否则会否则会“下溢下溢”;所以删除前要检查是否所以删除前要检查是否会会“下溢下溢”。序号 数据元素存储地址1a1ADR(a1)2a2ADR(a1)+kiaiADR(a1)(i1)knanADR(a1)(n1)k线性表的顺序存储结构线性表的顺序存储结构的特点的特点具有具有简单、存储密度大、空间利用率高、对表中简单、存储密度大、空间利用率高、对表中任一元素可直接确定其存储地址(随机存取)、任一元素可直接确定其存储地址(随机存取)、效率高等优点;效率高等优点;但是也有明显的不足:但是也有明显的不足:在顺序表中进行插入与删除等操作时,需大量移动数在顺序表中进行插入与删除等操作时,需大量移
13、动数据元素,浪费时间。据元素,浪费时间。因此,对于大的线性表,特别是元素变动频繁的大线因此,对于大的线性表,特别是元素变动频繁的大线性表,不宜采用顺序存储结构,而是采用链式存储结性表,不宜采用顺序存储结构,而是采用链式存储结构。构。1.1.线性表的链式存储线性表的链式存储通过每个节点的指针域将通过每个节点的指针域将n n个节点按其逻辑顺序个节点按其逻辑顺序连接在一起而构成的数据存储结构,称为链式存连接在一起而构成的数据存储结构,称为链式存储结构储结构。对线性链表而言,它不要求逻辑上相邻的元素在对线性链表而言,它不要求逻辑上相邻的元素在物理位置上也相邻,其存储单元既可以是连续的,物理位置上也相邻
14、,其存储单元既可以是连续的,也可以是不连续的,甚至可以零散分布在存储空也可以是不连续的,甚至可以零散分布在存储空间中的任何位置上。间中的任何位置上。数据域 指针域其中指针域 next 用于指向该节点的后继节点datanext7.2.3 线性表的链式存储及其运算线性表的链式存储及其运算1.1.线性表的链式存储线性表的链式存储序号 数据域1a292 3a114 5a406 7 8 9a35指针域3Heada1a2Heada3a43195datanext2.2.单链表的基本运算单链表的基本运算(1)(1)单链表的插入单链表的插入(2)(2)单链表的删除单链表的删除ai1aiXADR(ai-1)ADR
15、(x)ai1aiai1ADR(ai-1)ADR(ai-1).next ADR(x).next ADR(x)ADR(ai-1).next ADR(ai-1).next.next ADR(ai-1).next 释放 ADR(ai-1).nextreturn7.3 栈和队列栈和队列7.3.1 栈及其基本运算栈及其基本运算1.1.什么是栈什么是栈栈是栈是限定在一端限定在一端进行插入和删除进行插入和删除的线性表。的线性表。在栈中,允许插入和删除的一端称在栈中,允许插入和删除的一端称为为栈顶栈顶,用指针,用指针 top top 来表示栈顶的来表示栈顶的位置位置注意,注意,toptop的指向的指向而不允许插
16、入和删除的另一端称为而不允许插入和删除的另一端称为栈底栈底,用用 bottom bottom 指向栈底指向栈底注意,注意,bottombottom的指向的指向a1a2an栈顶 top栈底 bottom入栈退栈1.1.什么是栈什么是栈栈也被称为栈也被称为“先进后出先进后出”表或表或“后进先出后进先出”表。表。因此因此,栈具有记忆作用栈具有记忆作用。例如:例如:货物堆放货物堆放子弹夹子弹夹函数的调用函数的调用a1a2an栈顶 top栈底 bottom入栈退栈武汉科技大学计算机科学与技术学院2.2.栈的顺序存储及其运算栈的顺序存储及其运算在程序设计语言中,用一维数组在程序设计语言中,用一维数组 S
17、S(1:(1:m m)作为栈作为栈的顺序存储空间,其中的顺序存储空间,其中m m为栈的最大容量。为栈的最大容量。初始状态:初始状态:bottom=1bottom=1,top=0top=0S(1:10)S(1:10)S(1:10)A1B2C3D4E5F6X7Y8 9 10topbottom(b)插入X与Y后的栈A1B2C3D4E5F6 7 8 9 10topbottom(a)有6个元素的栈A1B2C3D4E5F6X7 8 9 10topbottom(c)退出一个元素后的栈对栈的定义的进一步理解对栈的定义的进一步理解一个栈的入栈序列是一个栈的入栈序列是a,b,c,d,ea,b,c,d,e,则不,则
18、不可能的出栈序列是(可能的出栈序列是()。)。A AedcbaedcbaB BdecbadecbaC CdceabdceabD Dabcdeabcde2.2.栈的顺序存储及其运算栈的顺序存储及其运算(1)(1)入栈运算入栈运算1.1.更新更新栈顶栈顶指针:指针:top+1 top+1 top top2.2.插入插入新元素:新元素:x x S Stoptop当当 top=m top=m 时,时,说明栈空间已满,不说明栈空间已满,不能再进行入栈操作。能再进行入栈操作。否则出现否则出现“上溢上溢”错误。错误。所以所以入栈之前入栈之前,要检查是否会,要检查是否会“上溢上溢”top-x2.2.栈的顺序存
19、储及其运算栈的顺序存储及其运算(2)(2)退栈运算退栈运算1.1.读读栈顶栈顶元素元素:S Stoptop x x2.2.更新更新栈顶指针栈顶指针:top-1 top-1 top top当当 top=0 top=0 时,说明栈空,不能时,说明栈空,不能再再进进行退栈运算。行退栈运算。否则会出现否则会出现“下溢下溢”错错误误;所以所以退栈之前退栈之前,要检查是否会,要检查是否会“下溢下溢”top-x2.2.栈的顺序存储及其运算栈的顺序存储及其运算(3)(3)读栈顶元素读栈顶元素读数:读数:S Stoptop x x栈顶指针栈顶指针保持保持不变不变当当 top=0top=0 时,说明栈空,读不到栈
20、顶元素时,说明栈空,读不到栈顶元素;所以所以读数之前读数之前,要检查是否为空栈。,要检查是否为空栈。7.3.2 队列及其基本运算队列及其基本运算武汉科技大学计算机科学与技术学院1.1.什么是队列什么是队列指允许指允许在一端进行插入,而在另一端进行删除在一端进行插入,而在另一端进行删除的的线性表。线性表。允许插入的一端称为允许插入的一端称为队尾队尾,通常用一个称为队尾指针,通常用一个称为队尾指针(rearrear)的指针指向队尾元素的下一个位置)的指针指向队尾元素的下一个位置注意,注意,rear rear 的指向的指向允许删除的一端称为允许删除的一端称为队首队首,通常用一个称为队首指针,通常用一
展开阅读全文