数据结构导论串讲幻灯片.ppt
《数据结构导论串讲幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据结构导论串讲幻灯片.ppt(148页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构导论串讲数据结构导论串讲第1页,共148页,编辑于2022年,星期六 概述概述数据结构导论是计算机科学与技术专业的一门必修课程。本课程介绍如何组织各种数据在计算机中的存储、传递和转换。内容包括:线性表、栈、队列、串、数组、树、二叉树、图等基本数据结构及其应用;排序和查找的原理与方法;数据在外存上的组织方法。第2页,共148页,编辑于2022年,星期六第一章概论第一章概论第3页,共148页,编辑于2022年,星期六第4页,共148页,编辑于2022年,星期六本章总述本章总述要求熟悉各名词、术语的含义,掌握基本概念。包括数据、数据元素、数据项、逻辑关系和逻辑结构、运算和基本运算、数据结构、
2、存储方式和存储结构、算法及算法分析等。注意这些概念之间的联系。第5页,共148页,编辑于2022年,星期六本章重点本章重点逻辑结构和数据结构的概念。本章难点本章难点算法的时间复杂性分析。第6页,共148页,编辑于2022年,星期六本章知识点本章知识点 1.1.数据、数据元素、数据项数据、数据元素、数据项数据能被计算机存储、加工的对象通称为数据。数据元素是数据的基本单位,在程序中作为一个整体来考虑和处理。具有完整确定的实际意义。数据项是数据不可分割的最小标识单位。数据元素可由若干个数据项组成,数据项通常不具有完整确定的实际意义。第7页,共148页,编辑于2022年,星期六数据数据数据项数据项数据
3、元素数据元素数据、数据元素和数据项构成了数据组织的三个层次,如下图所示:第8页,共148页,编辑于2022年,星期六2.2.数据结构数据结构数据结构是数据元素之间的相互关系。结构分为逻辑结构逻辑结构与物理结构物理结构。线性结构树形结构图状结构集合结构第9页,共148页,编辑于2022年,星期六存储结构:逻辑结构在计算机中的表示(映像)被称为存储结构,其中应该包含数据元素的内容及其关系的表示。四种基本存储方式:四种基本存储方式:顺序存储方式顺序存储方式特点:借助于数据元素在存储器中的位置来表示数据元素之间的逻辑关系链式存储方式链式存储方式 特点:借助指示元素存储地址的指针来表示数据元素之间的逻辑
4、关系索引存储方式索引存储方式 散列存储方式散列存储方式 第10页,共148页,编辑于2022年,星期六3.3.算法算法算法就是解决问题的方法。算法分析主要从时间复杂度、空间复杂度方面进行算法分析。时间复杂度:最坏情况时间复杂度,平均时间复杂度。Tnnlog2nn2本章结束本章结束第11页,共148页,编辑于2022年,星期六第二章线性表第二章线性表第12页,共148页,编辑于2022年,星期六第13页,共148页,编辑于2022年,星期六本章总述本章总述本章主要讨论了线性表及它的两种存储实现:顺序实现和链接实现;另外,简单介绍了串这种特殊的线性表的运算和存储实现。线性表线性表是一种最简单最常见
5、的数据结构数据结构第14页,共148页,编辑于2022年,星期六本章重点本章重点 线性结构的定义和特点;线性表的运算;顺序表和单链表的组织方法和算法设计。本章难点本章难点 单链表上的算法设计。第15页,共148页,编辑于2022年,星期六线性表的逻辑结构定义线性表的逻辑结构定义线性表是一个含有n个数据元素的有限序列。L=(a1,a2,a3,a4,a5,a6,.,an)ai-1,ai ,ai+1直接前驱直接前驱 直接后继直接后继线性表长度线性表长度第16页,共148页,编辑于2022年,星期六线性结构的基本特征线性结构的基本特征:线性结构是一个数据元素的有序(次序)集1.集合中必存在唯一的一个“
6、第一元素”;2.集合中必存在唯一的一个“最后元素”;3.除最后元素之外,均有唯一的后继;4.除第一元素之外,均有唯一的前驱。第17页,共148页,编辑于2022年,星期六顺序存储结构顺序存储结构用一组地址连续的存储单元依次存储线性表的元素。顺序表特点:顺序表特点:逻辑顺序与物理顺序一致;属随机存取的存储结构。第18页,共148页,编辑于2022年,星期六.a1a1a2a2a3a3a4a4a5a5a6a6ananb bb+Lb+Lb+2Lb+2Lb+3Lb+3Lb+(n-1)Lb+(n-1)L假设线性表中每个元素需占用L个存储单元LOC(ai+1)=LOC(ai)+LLOC(ai)=LOC(a1
7、)+(i-1)*LL:L:一个数据元素所占存储量一个数据元素所占存储量基地址基地址第19页,共148页,编辑于2022年,星期六插入、删除算法的分析插入、删除算法的分析插入算法的数学期望值删除算法的数学期望值设:pi=1/(n+1),qi=1/n,则可以得出:第20页,共148页,编辑于2022年,星期六顺序表表示的优缺点顺序表表示的优缺点优点:优点:随机存取随机存取表中的任一结点。缺点:缺点:插入和删除运算不方便,须移动大量的结点;存储分配只能预先分配。第21页,共148页,编辑于2022年,星期六链式存储结构链式存储结构用一组任意任意的存储单元(可能不连续)存储线性表的数据元素。.a3.a
8、2.a1.a4.第22页,共148页,编辑于2022年,星期六链式存储结构链式存储结构数据元素内容该数据元素的直接后继地址datanext数据域指针域第23页,共148页,编辑于2022年,星期六L=(a1,a2,a3,a4,a5,a6)结点L La1a2a3a4a5a6以线性表中第一个数据元素 的存储地址作为线性表的地址,称作线性表的头指针。第24页,共148页,编辑于2022年,星期六含有头结点的空表空表/L L/a1a2.an头结点头结点有时为了操作方便,在第一个结点之前附设一个“头结点”,以指向头结点的指针为链表的头指针指针域为空指针域为空第25页,共148页,编辑于2022年,星期六
9、特点特点:逻辑顺序与物理顺序有可能不一致。属顺序存取顺序存取的存储结构,即存取每个数据元素所花费的时间不相等。第26页,共148页,编辑于2022年,星期六datanextprior特点:克服单链表的单向性特点:克服单链表的单向性其它形式的链表其它形式的链表1.1.双向链表双向链表 (double linked list)(double linked list)每个结点有两个指针域第27页,共148页,编辑于2022年,星期六2.2.循环链表循环链表表中最后一个结点的指针域指向头结点,链表形成一个环。特点特点从表中任何一个结点出发可扫描整个链表中的所有结点。第28页,共148页,编辑于2022
10、年,星期六顺序实现与链接实现的比较顺序实现与链接实现的比较时间性能比较时间性能比较定位运算:顺序表和单链表,均为 O(n)读表元:顺序表-O(1)(随机存取);单链表-O(n)链入/摘除:顺序表-0(n);单链表-O(1)(插入、删除方便)第29页,共148页,编辑于2022年,星期六第三章栈、队列和数组第三章栈、队列和数组第30页,共148页,编辑于2022年,星期六第31页,共148页,编辑于2022年,星期六本章总述本章总述栈和队列是两种常用的数据结构,这两种结构与线性表有密切的联系。栈和队列的逻辑结构是线性结构,它们的基本运算与线性表的基本运算十分类似,可看作是运算受限的线性表。数组与
11、线性表也有密切的联系。第32页,共148页,编辑于2022年,星期六本章重点本章重点栈和队列的特点;顺序栈和链栈上基本运算的实现和简单算法;链队上基本运算实现和简单算法设计。本章难点本章难点循环队的组织,队满、队空的条件及算法设计。第33页,共148页,编辑于2022年,星期六栈的类型定义栈的类型定义插入、删除只在表尾表尾进行的线性表被称为栈栈。a1 a2 a3 a4 .an插入插入删除删除第34页,共148页,编辑于2022年,星期六栈的特点栈的特点后进先出-LIFO (Last In First Out)栈顶浮动栈底固定a1a2a3a4出出 进进栈底栈底栈顶栈顶第35页,共148页,编辑于
12、2022年,星期六栈的表示和实现栈的表示和实现顺序存储结构:顺序存储结构:顺序栈链式存储结构:链式存储结构:链栈第36页,共148页,编辑于2022年,星期六队列定义队列定义若线性表的插入操作插入操作在一端进行,删除操作删除操作在另一端进行,则称此线性表为队列队列。第37页,共148页,编辑于2022年,星期六a1,a2,a3,a4,.,an删除端删除端插入端插入端队头队头frontfront队尾队尾rearrear第38页,共148页,编辑于2022年,星期六队列特点队列特点 FIFO(First In First Out)队头、队尾均是浮动的队列类型的实现队列类型的实现链队列链式映象循环队
13、列顺序映象第39页,共148页,编辑于2022年,星期六q4q3q2q1frontrear3210入队入队 Qrear+=e;Qrear+=e;出队出队 e=Qfront+e=Qfront+队列的顺序存储结构队列的顺序存储结构第40页,共148页,编辑于2022年,星期六队列的顺序存储结构队列的顺序存储结构frontrear“假溢出”现象解决的方法:将队列构成环状环状q4q3q2q1第41页,共148页,编辑于2022年,星期六循环队列循环队列012345678q1q2q3q4q5rearfront入队操作:sq.rear=(sq.rear+1)%maxsize;出队操作:sq.front=(
14、sq.front+1)%maxsize;队列空:sq.rear=sq.front 队列满:(sq.rear+1)%maxsize)=sq.front;第42页,共148页,编辑于2022年,星期六数组数组是一种已经在高级语言中实现了的数据结构。通常采用顺序存储结构来存放数组。有两种顺序映象的方式(二维数组)有两种顺序映象的方式(二维数组):1)以行序为主序(低下标优先);2)以列序为主序(高下标优先);第43页,共148页,编辑于2022年,星期六例如:例如:称为基地址基地址或基址。以以“行序为主序行序为主序”的存储映象的存储映象二维数组A中任一元素ai,j 的存储位置 LOC(i,j)=LO
15、C(0,0)+(b2ij)a0,1a0,0a0,2a1,0a1,1a1,2a0,1a0,0a0,2a1,0a1,1a1,2L L 第44页,共148页,编辑于2022年,星期六矩阵的压缩存储矩阵的压缩存储矩阵可用二维数组来表示。实际问题中,会碰到阶数高的矩阵,但存在许多值相同的元素和零元素。压缩存储的基本思想:值相同的多个元素只分配一个存储空间,零元素不分配空间。特殊矩阵的压缩存储特殊矩阵的压缩存储(对称矩阵,三角矩阵对称矩阵,三角矩阵 )稀疏矩阵的压缩存储稀疏矩阵的压缩存储(三元组顺序表三元组顺序表)第45页,共148页,编辑于2022年,星期六第四章树第四章树第46页,共148页,编辑于2
16、022年,星期六第47页,共148页,编辑于2022年,星期六本章总述本章总述本章是数据结构课程的重点之一。主要内容包括:树形结构的基本概念,定义在树形结构上的两种重要的数据结构-二叉树和树,它们的常见存储结构、遍历运算的实现以及它们之间的转换。第48页,共148页,编辑于2022年,星期六本章重点本章重点树形结构的概念;二叉树的定义、存储结构和遍历算法本章难点本章难点二叉树的遍历算法第49页,共148页,编辑于2022年,星期六二叉树或为空树空树;或是由一个根结点根结点加上两棵两棵分别称为左子树左子树和右子树的、互不交的二叉树互不交的二叉树组成。ABCDEFGHK根结点根结点左子树左子树右子
17、树右子树第50页,共148页,编辑于2022年,星期六二叉树的五种基本形态:二叉树的五种基本形态:N空树空树只含根结点只含根结点NNNLRR右子树为空树右子树为空树L左子树为空树左子树为空树左右子树均不为左右子树均不为空树空树第51页,共148页,编辑于2022年,星期六二叉树的重要特性二叉树的重要特性性质性质1:1:在二叉树的第 i 层上至多有2i-1 个结点。(i1)性质性质2:2:深度为 k 的二叉树上至多含 2k-1 个结点(k1)性质性质3:3:对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0=n2+1两类特殊的二叉树:两类特殊的二叉树:(1
18、)满二叉树:指的是深度为k且含有2k-1个结点的二叉树。(2)完全二叉树:树中所含的n个结点和满二叉树中编号为1 至n的结点一一对应。性质性质4:4:具有 n 个结点的完全二叉树的深度为 log2n+1第52页,共148页,编辑于2022年,星期六性质性质5:5:若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:(1)若 i=1,则该结点是二叉树的根,无双亲,否则,编号为 i/2 的结点为其双亲结点;(2)若 2in,则该结点无左孩子,否则,编号为 2i 的结点为其左孩子结点;(3)若 2i+1n,则该结点无右孩子结点,否则,
19、编号为2i+1 的结点为其右孩子结点。第53页,共148页,编辑于2022年,星期六二叉树的存储结构二叉树的存储结构1、二叉树的顺序存储表示 适用于完全二叉树或满二叉树。适用于完全二叉树或满二叉树。2、二叉树的链式存储表示 二叉链表 三叉链表第54页,共148页,编辑于2022年,星期六二叉树遍历二叉树遍历 顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。遍历算法遍历算法先(根)序的遍历算法中(根)序的遍历算法后(根)序的遍历算法以遍历为基础,可以实现二叉树上的许多复杂运算。第55页,共148页,编辑于2022年,星期六 若二叉树为空树,则空操作;否则,(1)
20、访问根结点;(2)先序遍历左子树;(3)先序遍历右子树。先(根)序的遍历算法:先(根)序的遍历算法:第56页,共148页,编辑于2022年,星期六 若二叉树为空树,则空操作;否则,(1)中序遍历左子树;(2)访问根结点;(3)中序遍历右子树。中(根)序的遍历算法:中(根)序的遍历算法:第57页,共148页,编辑于2022年,星期六 若二叉树为空树,则空操作;否则,(1)后序遍历左子树;(2)后序遍历右子树;(3)访问根结点。后(根)序的遍历算法:后(根)序的遍历算法:第58页,共148页,编辑于2022年,星期六PreOrder:a b c d e g f hInOrder:c b e g d
21、 f a hPostOrder:c g e f d b h aabcdefgh第59页,共148页,编辑于2022年,星期六 树和森林树和森林树的三种存储结构树的三种存储结构 双亲表示法 孩子链表表示法 孩子-兄弟存储表示法树的遍历树的遍历 先根遍历 后根遍历 层次遍历树、森林与二叉树的关系树、森林与二叉树的关系(相互转换相互转换)注意:注意:(1)与树对应的二叉树的根结点的右子树一定为空(2)和树对应的二叉树,其左、右子树的概念已改变为:左是孩子,右是兄弟第60页,共148页,编辑于2022年,星期六树的带权的路径长度树中所有叶子结点的带权路径长度之和Huffman树设有n个权值w1,w2,
22、wn,构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则wpl最小的二叉树叫Huffman树哈夫曼算法 判定树和哈夫曼树判定树和哈夫曼树 本章结束本章结束第61页,共148页,编辑于2022年,星期六第五章图第五章图第62页,共148页,编辑于2022年,星期六第63页,共148页,编辑于2022年,星期六本章总述本章总述本章主要讨论图这一重要的数据结构。图不同于线性结构,也不同于树形结构,在任何两个顶点之间都可能存在邻接关系。图的存储结构、图的遍历以及图的应用最小生成树、拓扑排序。第64页,共148页,编辑于2022年,星期六本章重点本章重点图的存储结构和连通图的遍历。本章难点本章难点
23、Prim算法。第65页,共148页,编辑于2022年,星期六名词和术语名词和术语网、子图 完全图、稀疏图、稠密图邻接点、度、入度、出度路径、路径长度、简单路径、简单回路连通图、连通分量、强连通图、强连通分量生成树、生成森林第66页,共148页,编辑于2022年,星期六图的存储结构图的存储结构一、图的数组(邻接矩阵)存储表示二、图的邻接表存储表示 邻接表是图的一种链式存储结构。为图中每个顶点建立一个单链表,第i个单链表中的结点表示依 附于顶点Vi的边(有向图中指以Vi为尾的弧)。第67页,共148页,编辑于2022年,星期六邻接矩阵特点邻接矩阵特点无向图的邻接矩阵是对称矩阵;有向图的邻接矩阵不一
24、定是对称矩阵;判断任意两个点的邻接关系容易;适用于稠密图的表示。ABDCE0101000100000010010011000A B C D EA BCDE第68页,共148页,编辑于2022年,星期六邻接表特点邻接表特点无向图中:顶点Vi的度为第i个单链表中的结点数。有向图中:顶点Vi的出度为第i个单链表中的结点个数;顶点Vi的入度需遍历整个邻接表,邻接点域指向Vi的结点个数。第69页,共148页,编辑于2022年,星期六图的遍历图的遍历从图中某个顶点出发访问图中每个顶点一次且仅一次的过程。连通图深度优先搜索 连通图广度优先搜索深度优先搜索:深度优先搜索:V0V0 V1 V1 V3V3 V7
25、V7V4V4V2 V2 V5 V5 V6 V6 广度优先搜索序列:广度优先搜索序列:V0V0 V1 V1 V2V2 V3 V3 V4V4V5V5V6V6V7V7V0V1V3V4V2V6V5V7第70页,共148页,编辑于2022年,星期六从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图中的其余顶点,直至图中所有和V0有路径相通的顶点都被访问到为止。连通图的深度优先搜索遍历连通图的深度优先搜索遍历第71页,共148页,编辑于2022年,星期六 从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,随后按这些顶点被访问的先
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 导论 串讲 幻灯片
限制150内