数据结构期末复习资料.docx
- 文档编号:23253954
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:16
- 大小:572.35KB
数据结构期末复习资料.docx
《数据结构期末复习资料.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习资料.docx(16页珍藏版)》请在冰豆网上搜索。
数据结构期末复习资料
数据结构复习资料
第一章绪论
1.1基本概念和术语
1.数据是对客观事物的符号表示;数据元素是数据的基本单位,一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位;数据对象是性质相同的数据元素的集合,是数据的一个子集。
2.数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
3.
A.数据结构的三要素:
①数据的逻辑结构②数据的存储结构③数据的运算(算法)
B.任何一个算法的设计取决于选定的逻辑结构,而算法的实现依赖于采用的存储结构
4.数据的逻辑结构:
①集合②线性结构③树型结构④图状结构或网状结构
1.2算法和算法分析
1.算法的五个特性:
①有穷性②确定性③可行性④输入⑤输出
2.时间复杂度:
时间复杂度是指执行算法所需要的计算工作量
空间复杂度:
空间复杂度是指执行这个算法所需要的内存空间
第二章线性表
2.1线性表的顺序表示和实现
1.线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。
2.优点:
线性表的顺序存储结构是一种随机存取的存储结构
3.顺序线性表插入:
顺序线性表删除:
4.线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(可连续,可不连续)
5.对数据元素来说,除了存储其自身的信息之外,还需存储一个指示其直接后继的信息(存储位置),这两部分信息组成数据元素的存储映像,称为结点。
他包括两个域:
其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。
指针域中存储的信息称为指针或域。
N个结点链结成一个链表,即为线性表的链式存储结构。
又由于此链表的每个结点中只包含一个指针域,故又称为线性链表或单链表。
6.链表的插入与删除
7.双向链表的插入与删除
第三章栈和队列
3.1栈
1.栈是限定仅在表尾进行插入或删除操作的线性表。
因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应的,表头端称为栈底。
不含元素的空表称为空栈。
2.栈又称为后进先出的线性表
3.栈的进栈与出栈操作
3.2队列
1.队列是一种先进先出的线性表,它只允许在表的一段进行插入,而在另一端删除元素。
2.允许插入的一端叫做队尾,允许删除的一端则称为对头。
第四章串
4.1串类型的定义
1.串(或字符串)是由零个或多个字符组成的有限序列。
串中字符的数目n称为串的长度。
零个字符的串称为空串。
2.串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。
通常称字符在序列中的序号为该字符在串中的位置。
子串在主串中的位置则以子串的第一个字符在主串中的位置。
3.只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。
第五章树和二叉树
5.1树的定义和基本术语
1.树是n个结点的有限集
2.结点:
包含一个数据元素及若干指向其子树的分支。
结点的度:
结点拥有的子树数。
度为0的结点称为叶子或终端结点。
度不为0的结点称为非终端结点或分支结点。
树的度:
树内各结点的度的最大值。
孩子:
结点的子树的根称为该结点的孩子,相应的,该结点称为孩子的双亲。
兄弟:
同一个双亲的孩子之间互称兄弟。
祖先:
结点的祖先是从根到该结点所经分支上的所有结点,反之,以某结点为根的子树中任一结点都称为该结点的子孙。
结点所处层次:
从根开始定义起,根为第一层,根的孩子为第二层。
树的深度:
树中结点的最大层次称为树的深度或高度。
有序树:
如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。
森林:
是m棵互不相交的树的集合。
5.2二叉树
1.二叉树是另一种树型结构,特点是:
每个结点至多只有两棵子树,并且,二叉树的子树有左右之分,次序不能换。
2.二叉树的性质:
①在二叉树的第i层上至多有
个结点(i>=1)②深度为k的二叉树至多有
个结点(k>=1)
3.满二叉树:
每一层上的结点数都是最大结点数,深度为k且有
个结点的二叉树
4完全二叉树:
若设二叉树的深度为h,则共有h层。
除第h层外,其它各层(0h-1)的结点数都达到最大个数,第h层从右向左连续缺若干结点,这就是完全二叉树。
5.3遍历二叉树
1.先序遍历DLR
遍历结果:
-+a*b-cd/ef
2.中序遍历LDR
遍历结果:
a+b*c-d-e/f
3.后序遍历LRD
遍历结果:
abcd-*+ef/-
4.树的综合算法求深度…
5.4树和森林
1.森林与二叉树的转换
①在同胞兄弟之间加连线;
②保留结点与第一个孩子之间的连线,去掉其余连线;
③顺时针旋转45度。
以根结点为轴;左孩子不再旋转。
5.5赫夫曼树及其应用
1.路径长度:
两个结点之间的路径长度是连接两结点的路径上的分支数。
树的路径长度:
树的路径长度是各结点到根结点的路径长度之和。
树的带权路径长度:
树的各叶结点所带的权值与该结点到根的路径长度的乘积的和。
赫夫曼树:
带权路径长度达到最小的二叉树即为赫夫曼树(最优二叉树)。
在赫夫曼树中,权值大的结点离根最近。
2.如何构造赫夫曼树(重点)
(1)由给定的n个权值{w0,w1,w2,…,wn-1},构造具有n棵二叉树的森林F={T0,T1,T2,…,Tn-1},其中每一棵二叉树Ti只有一个带有权值wi的根结点,其左、右子树均为空。
(2)在F中选取两棵根结点的权值最小的二叉树,做为左、右子树构造一棵新的二叉树。
置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。
(3)在F中删去这两棵二叉树,同时把新的二叉树加入F。
(4)重复
(2)和(3),直到F只含一棵树为止。
这棵树便是赫夫曼树。
第六章图
6.1图的定义与术语
1.图是由顶点集合及顶点间的关系集合组成的一种数据结构
2.在图中的数据元素通常称做顶点。
3.x---y表示从x到y的一条弧,x为弧尾或初始点,y为弧头或终端点,此时的图称为有向图。
4.无向图:
边用(x,y)表示,且顶x与y是无序的
5.n个顶点间有n(n-1)/2条边。
6.完全图:
有n(n-1)/2条边的无向图。
7.有向完全图:
具有n(n-1)条弧的有向图,图中各边都有方向,且每两个顶点之间都有两条方向相反的边连接的图。
无向完全图:
边数恰好等于n(n-1)/2的n个结点的无向图称为完全图。
稀疏图:
有很少条边或弧的图称为稀疏图,反之称为稠密图。
8.顶点的度:
无向图:
与该顶点相关的边的数目
有向图:
入度:
以该顶点为头的弧的数目出度:
以该顶点为尾头的弧的数目
在有向图中,顶点的度等于该顶点的入度与出度之和。
9.邻接点
无向图:
两顶点之间有条边,则两顶点互为邻接点
有向图:
从x到y有一条弧,则y是x的邻接点,但x不是y的邻接点
权:
某些图的边具有与它相关的数,称之为权。
这种带权图叫做网络。
10.路径长度
①非带权图的路径长度是指此路径上边/弧的条数。
②带权图的路径长度是指路径上各边/弧的权之和。
11.简单路径:
若路径上各顶点v1,v2,...,vm均不互相重复,则称这样的路径为简单路径。
回路:
若路径上第一个顶点v1与最后一个顶点vm重合,则称这样的路径为回路或环。
12.连通图与连通分量
在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1与v2是连通的。
如果图中任意一对顶点都是连通的,则称此图是连通图。
非连通图的极大连通子图叫做连通分量。
13.强连通图与强连通分量
在有向图中,若对于每一对顶点vi和vj,都存在一条从vi到vj和从vj到vi的路径,则称此图是强连通图。
非强连通图的极大强连通子图叫做强连通分量。
14.生成树
一个连通图的生成树是它的极小连通子图,在n个顶点的情形下,有n-1条边。
①生成树是对指连通图来而言的②是连同图的极小连同子图③包含图中的所有顶点④有且仅有n-1条边
6.2图的遍历
1.从图中某一顶点出发访遍图中其余顶点,且使每个顶点仅被访问一次,就叫做图的遍历
2.图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。
3.两条遍历图的路径:
深度优先搜索、广度优先搜索
4.深度优先搜索:
(1)从图中的某个顶点V出发,访问之;
(2)依次从顶点V的未被访问过的邻接点出发,深度优先遍历图,直到图中所有和顶点V有路径相通的顶点都被访问到;
(3)若此时图中尚有顶点未被访问到,则另选一个未被访问过的顶点作起始点,重复上述
(1)
(2)的操作,直到图中所有的顶点都被访问到为止。
5.广度优先搜索
(1)从图中的某个顶点V出发,访问之;
(2)依次访问顶点V的各个未被访问过的邻接点,将V的全部邻接点都访问到;(3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直到图中所有已被访问过的顶点的邻接点都被访问到。
6.3最小生成树的构造方法
1.普里姆算法构造最小生成树的过程:
2.克鲁斯卡尔算法构造最小生成树的过程
6.4有向无环图及其应用
1.一个无环的有向图称为有向无环图
2.如果在无有向环的带权有向图中
用有向边表示一个工程中的各项活动;用边上的权值表示活动的持续时间;用顶点表示事件
3.完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和。
这条路径长度最长的路径就叫做关键路径
4.关键路径的求解(必考大题):
事件
V1
V2
V3
V4
V5
V6
V7
V8
V9
最早
0
6
4
5
7
7
16
14
18
选最大
最迟
0
6
6
8
7
10
16
14
18
V9最早时间-从V9到Vi路径最长
活动
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
最早
0
0
0
6
4
5
7
7
7
16
14
起点的最迟时间
最迟
0
2
3
6
6
8
7
7
10
16
14
V9-Ai+…(最大长度)
第七章查找
7.1静态查找表
1.顺序查找过程:
从表中最后一个元素开始,顺序用各元素的关键字与给定值x进行比较,若找到与其值相等的元素,则查找成功,给出该元素在表中的位置;否则,若直到第一个记录仍未找到关键字与x相等的对象,则查找失败。
算法
2.顺序查找的平均查找长度:
(n+1)/2
查找成功:
(1+n)/21为最少查找次数n为最多查找次数
查找失败:
n+1
3.折半查找:
先确定待查记录所在的范围,然后逐步缩小范围直到找到或找不到该记录为止。
4.索引顺序表的查找:
1)分块有序(升序或降序)——第i块中的最大(小)值小(大)于第i+1块中的最(大)小值
2)查找
(1)先查索引表——折半查找
(2)再查顺序表——顺序查找
块间有序,块内无序
7.2动态查找表
1.二叉排序树:
二叉排序树(二叉查找树)或者是一棵空树,或者是具有下列性质的二叉树:
①每个结点都有一个作为查找依据的关键字(key),所有结点的关键字互不相同。
②左子树(若非空)上所有结点的关键字都小于根结点的关键字。
③右子树(若非空)上所有结点的关键字都大于根结点的关键字。
④左子树和右子树也是二叉排序树。
2.二叉排序树的插入
为了向二叉排序树中插入一个新元素,必须先检查这个元素是否在树中已经存在。
在插入之前,先使用查找算法在树中检查要插入元素有还是没有。
查找成功:
树中已有这个元素,不再插入。
查找不成功:
树中原来没有关键字等于给定值的结点,把新元素加到查找操作停止的地方。
3.二叉排序树的删除
要删除二叉排序树中的p结点,分三种情况:
p为叶子结点,只需修改p双亲f的指针f->lchild=NULL或f->rchild=NULL
p只有左子树,用p的左孩子代替p
p只有右子树,用p的右孩子代替p
p左、右子树均非空,沿p左子树的根C的右子树分支找到S,S的右子树为空,将S的左子树成为S的双亲Q的右子树,用S取代p,若C无右子树,用C取代p
4.二叉排序树的查找分析
5.平衡二叉树AVL树
一棵AVL树或者是空树,或者是具有下列性质的二叉查找树:
它的左子树和右子树都是AVL树,且左子树和右子树的高度之差的绝对值不超过1。
平衡因子(平衡度):
结点的平衡度是结点的左子树的高度减去右子树的高度
平衡二叉树:
每个结点的平衡因子都为+1、-1、0的二叉树,或者说每个结点的左右子树的高度最多差一的二叉树。
注意:
完全二叉树必为平衡树,平衡树不一定是完全二叉树。
7.3平衡化旋转
1.平衡化旋转有两类:
单旋转(左旋和右旋),双旋转(左平衡和右平衡)
2.如果这三个结点处于一条直线上,则采用单旋转进行平衡化;如果这三个结点处于一条折线上,则采用双旋转进行平衡化
3.旋转方法:
①单旋转:
中间移上去,上面移下来,多余找空插。
②双旋转:
两次单旋
7.4处理冲突的方法
1.开放定址法:
当冲突发生时,形成一个探查序列;沿此序列逐个地址探查,直到找到一个空位置(开放的地址),将发生冲突的记录放到该地址中,即Hi=(H(key)+di)MODm,i=1,2,……k(km-1)
线性探测再散列:
di=1,2,3,……m-1二次探测再散列:
di=1²,-1²,2²,-2²,3²,……±k²(km/2)伪随机探测再散列:
di=伪随机数序列
第八章内部排序
1.插入排序的基本方法是:
每步将一个待排序的对象,按其关键字大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。
若待排序的记录个数n较小时,可采用简单排序方法。
若n较大时,应采用快速排序或堆排序。
若待排序的记录已基本有序,可采用起泡排序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 复习资料