《数据结构教学资料》410章复习资料doc.docx
- 文档编号:5245098
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:19
- 大小:575.04KB
《数据结构教学资料》410章复习资料doc.docx
《《数据结构教学资料》410章复习资料doc.docx》由会员分享,可在线阅读,更多相关《《数据结构教学资料》410章复习资料doc.docx(19页珍藏版)》请在冰豆网上搜索。
《数据结构教学资料》410章复习资料doc
第四章串
◎课后思考题及解答:
思考题:
1>名词解释:
字符串、空串、空格串、串相等、子串和主串
字符串:
由零个或多个字符组成的有限序列。
空串:
零个字符的串称为空串,记作“0"或"0
空格串:
由一个或多个空格组成的串。
串相等:
两个串相等,当且仅当:
其两个串的长度相等,并且各个对应位置的字符都相等。
子串:
串中任意个连续的字符组成的子序列
主串:
包含子串的串
2、串的两种最基木的存储方式是顺序存储和链式存储
3、两个串相等的充分必要条件是其两个串的长度相等■并且各个对应位置的字符都相等
4、设模式串为t="abaabcac",请写出该模式串的next函数值序列。
序列:
01122312
前两个字母next序列分别为01,直接写上
第三个怙’时,它前一个字母为b从头开始字母为4a!
=b所以为1
第四个“才时,前字母为a从头开始字母为aa=a所以值为1+1=2(相等时为串长加1)
第五个“b”,前个字母为a从头开始a沪a为2
第六个叱:
前个字母为b,再往前是aab,从头开始ab串,ab=ab,因此值为2+1=3
第七个字母为卞:
前个字母为C与从头开始的第一个字母不相等,所以为1
第八个为叱:
前个字母为耳与开始第一个字母相等,因此为2
5、编写算法,从字符串S中删除所有和字符串T相同的子串。
6、
(1)釆川顺序结构存储串,设计一个算法计算一个子串在一个字符串屮出现的次数,如果该子串不出现则为0。
(2)假设以链式存储结构表示串。
设计一个将串t插入到串s中某个字符(第一次出现)之前的算法(若s屮不存在此字符,则将串t连接在串s的末尾)。
第五章数组和广义表
◎木章小结:
◎课堂笔记及重要知识点:
1.假设以一维数组作为n阶对称矩阵A的存储空间,以行序为主序存储A的下三和,则元素A[5][6]的值存储在S[_冲。
6*(6+1)/2+5=26
2.
稀疏矩阵的压缩存储一十字链表
2.—维数组具有线性表的结构,操作简单,一般不进行插入和删除操作,只定义给定卜-标读取元素和修改元素的操作.二维数组屮,每个数据元素对应一对数组下标,在行方向上和列方向上都存在一个线性关系,即存在两个前驱和两个后继。
也可看作是以线性表为数据元素的线性表。
n维数组中,每个数据元素对应n个下标,受n个关系的制约,其中任一个关系都是线性关系。
町看作是数据元素为维数组的一维数组。
因此,多维数组和广义表是对线性表的扩展:
线性表中的数据元索本身乂是一个多层次的线性表。
◎课后思考题及解答:
1.2.
练习:
L=(a,(x,y),((x)))
画出矩阵的十字链表。
((x,y),((x)))
0-1
(少如
()
y())
X()
3.
0
1
0
0
0
0
3
0
0
0
2
0
4
0
0
()]
0
0
0
6丿
画出矩阵X的三元组表和十字链表。
4•广义表F=((((a),b)),(((),(d)),(e,f)))画出其图形表示及存储结构。
5广义表G=(((a,b,()),(),(a,(b))),())画出其图形表示及存储结构。
6.假设有二维数组elemtypea[6][8];毎个数据元素占6个字节,存储器按字节编址。
a的基地址为1000,则:
⑴数组a的体积;
(2)数组a的最后一个元素的第一个字节的地址;
⑶按行存储时,a[2,4]的第一•个字节的地址;
⑷按列存储吋,a[2,4]的第一个字节的地址;
第六章树和二叉树
◎木章小结:
树
1、树的几个基本术语:
树,结点和树的度,分支结点,叶子结点,结点的层次,树的深度等
2、树的4种表示:
树形表示,文氏图表示,凹入表示法、嵌套括号表示法
3、树的性质
4、树的存储结构:
顺序存储和链式存储
5、树的遍历:
先根遍历、后根遍历、层次遍历
二叉树
1>二义树的儿个基本术语:
二义树、满二义树、完全二叉树
2、二叉树的性质
3、二叉树的存储结构:
顺序存储和链式存储
4、线索二叉树
5、二叉树的3种遍历:
先序遍历、中序遍历、后序遍历、(层序遍历)
树和森林
1、树与二叉树的相互转换
2、森林与二叉树的相互转换
赫夫曼树
1、赫夫曼树的定义
2、构造赫夫曼树的算法
3、赫夫曼编码
◎课堂笔记及重要知识点:
1.
树.?
—-O二义树
2.树转换为二叉树的步骤:
加线:
在兄弟结点之间加一连线;
抹线:
对任何结点,除了其最左的孩了外,抹掉该结点原先与其他孩了之间的连线;
旋转:
将水平的连线和原有的连线,以树根结点为轴心,按顺时针方向粗略地旋转450。
3.二叉树还原成树的步骤:
加线:
如果某结点是双亲结点的左孩了;则将该结点的右孩了,右孩了的右孩了,……,沿着右分支搜索到的所有右孩子都分别与该结点的双亲用线连接起來;
抹线:
抹掉原二叉树中所有结点与其右孩了的连线;
调整:
将结点按层次排列,形成树的结构.
4.森林转换成二叉树的步骤:
转换:
将森林中的每一颗树转换成二叉树;
连线:
将各棵转换后的二叉树的根结点相连;
旋转:
将添加的水平线和原有的连线,以第一•颗树的根结点为轴心,按顺时针方向旋转450o
5.森林转化成二叉树的规则
若森林F为空,即n=0,则对应的二叉树B为空二叉树。
若F不空,贝IJ对应二义树B的根root(B),是F中笫一棵树T1的根root(T1);
其左子树为LB,是由root仃:
L)的子树森林{TLL,T12,…,Tim}转换而来的;
其右了树为RB,是由除T1外其它树构成的森林{T2ZT3,…,Tn}转换而来的。
6.二叉树转换为森林的规则
如果B为空,则对应的森林F也为空。
如果B非空,贝I」F中笫一棵树T1的根root(T1),是二叉树B的根root(B);
T1的根的子树森林{Til,T12,-zTlm},是由root的左子树LB转换而来;
F中除了T1之外其余的树组成的森林{T2,T3,-,Tn},是由root的右子树RB转换而来。
7.森林的遍历
O森林的先序遍历
若森林不空,则
1•访问森林中第一棵树的根结点;
2.先序遍历森林中笫一棵树的子树森林;
3.先序遍历森林屮(除第一棵树之外)其余树构成的森林。
O森林的小序遍历
若森林不空,则
1.中序遍历森林中第一棵树的了树森林;
2.访问森林中第一棵树的根结点;
3.
中序遍历森林屮(除第一棵树之外)其余树构成的森林。
29
可以证明:
13
16
哈夫曼树是试优树!
([
)(
V
/
7
例如:
已知权值W={5,6,2,7,7,7}
⑤⑥②⑦⑦⑦
例如:
已知权值W={5,6,2,9,7}
=18+7X10=8«
C5J(
\VPL=6X2+7X2+5X3+2X3+9X2=65
举例:
1•已知菜系统在通讯联络中只可能出现八种字符A,B,C,D,E,F,G,H,其概率分别为:
0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11试设计赫夫曼编码.
设权w={5,29,7,&14,23,3,11}
ABCDEFGH
0110011111101111
2.数据文件压缩:
已知一个由A,B,C,D,E£G,H等八个字符组成的文件包含10000个字符,如果对这八个字符都
按等长编码:
000,001,010,011,100,101,110,111
则文件包含的总位数为:
10000X3=30000位
现12知八个字符在文件屮出现的频率分别为:
0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11
如果采用赫夫曼编码:
0110,10,1110,1111,110,00,0111,010
则文件的总位数为:
(4X0.05+2X0.29+4X0.07+4X0.08+3X0.14+2X0.23+4X0.03+3
X0.11)X10000=27100位
压缩率为:
9.67%
◎课后思考题及解答:
1、一-棵度为2的树与一-棵二叉树有何区别?
2、已知用一维数组存放的一棵完全二叉树:
ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。
3、假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请写出该二叉树的后序遍历序列。
4、给定一组权值(5,9,11,2,7,16),试设计相应的哈夫曼树。
5、给定一棵用二叉链表表示的二叉树,其屮的指针t指向根结点,试写出从根开始,按层次遍历二叉树的算法,同层的结点按从左至右的次序访问。
O算法题:
1、顺序存储方式的二叉树的建立算法。
2、已知先根序列,递归建立的二叉树,要求输入的序列字数要补齐。
3、已知二叉树的中根序列和先根序列,构造建立相应的二叉链表。
4、二叉树的遍历算法(利用递归和非递归算法完成前序、中序、后序的遍历)。
第七章图
◎课堂笔记及重要知识点:
练习:
1丽出有向图G的邻接矩阵
练习;
0
0
0
0
0
I
I
0
0
0
I
0
0
I
0
0
0
I
0
0
0
0
0
0
0
0
I
I
0
0
■邻接农.逆邻接农。
✓/V■CCCC、
简mi训路:
3>5.6・3
路径:
I.
2.
5.
7,6.5.2
路径长度:
7
L
2.
5-7.6
m:
r
2>
&
7,6>5,2
简单冋Wh
L
2.
3.I
路径:
1>2.3.5>6.3s
简单路径:
1.2.3.5阿路:
1>2>3>仏6,3,1
012345邻接表
012345逆邻接表
练习:
画出有向图G的十字链表。
0Vi|
I
1V2匚
2V3j-
3呵|-
f
4Vs
A
30AJ
12A|-P1I3AA
23
a|
・3
4
AA
imitB卜面有向图的DFS±成树与BFS生成树。
DFS生成栉.・・・・・•
@(vs)•・・・・・/BFS生成树
/•••••■■®(3)@
©€)
练习:
画出从顶点W开始的DFS与BFS牛成森林。
©
利用普里姆算法建立最小生成树
(a)无向网
D,i
©
10
5
(e)选取(B、F)
(f)选取(B、C)
(g)选取(E、F)
应用克鲁斯卡尔算法构造最小生成树的过程
①
©
©
10
(h)
(f)
(g)
练习:
利用Prim算法、Kruskal算法构造放小生成树<>
®22O2©
@121。
…①1®
结果:
2®22O©
o®11
©1O1®
彳列:
对如下AOE网,求出各活动的最早开始时间e(i)和最迟开始时间l(i)。
问:
工程完成的最短时间是多少?
哪些活动是关键活动?
并画出关键路径。
答:
活动
31
a2
a】
34
a5
a6
a7
a8
a9
a〕o
an
a>2
an
a.i
C
0
0
5
6
6
12
12
12
15
15
16
17
19
22
1
4
0
9
6
13
13
16
12
16
16
20
17
20
22
1-C
4
0
4
0
7
1
4
0
1
1
4
0
1
0
工程完成的最短时间为:
a2+a4+a8+a12+a14=24
◎课后思考题及解答:
1、已知一个无向图的邻接表如图所示,试写出从顶点0出发分別进行深度优先和广度优先搜索遍历得到的顶点序列。
2、编写一个算法,求出邻接矩阵表示的无向图小序号为numb的顶点的度数。
intdegreel(Graph&ga,intnumb)
3、下图给出了一个具冇15个活动、□个事件的工程的AOE网,求关键路径
例:
若从空树出发,经过•系列的查找插入Z后,可生成-棵二义排疗树;设关键字庁列为{45,24,
53.12,24,90},则生成的二叉排序树如下:
9
f45
I續
f一绞
49
49
45
f咨53
f^4
5S
^4f-53
12
12
12
90
二叉排序树的一些特性:
(1)中序遍历二叉排序树可得到一个关键字的有序序列。
(2)在构造二叉排序树屮,在进行插入新结点操作时,不必移动其它结点,仅需改动某个结点的指针,由空变为非空即可。
(3)二叉排序树既拥冇类似于折半杳找的特性,乂采用了琏表作为存储结构,是动态查找表的一种适宜表示。
◎课后思考题及解答:
1、画出对长度为10的有序表进行折半查找的判定树,并求出等概率时杳找成功的平均查找长度。
2、有关键字序列{38,52,25,74,68,16,30,54,90,72};
(1)构造它的二叉排序树;(画出构造过程)
(2)构造它的平衡二叉排序树;(画出构造、调整过程)
⑶分别求出上述二叉排序树和平衡二叉排序树的平均查找长度。
3.在地址空间为0-13的散列区小,对以下关键字序列构造两个哈希表:
(Jan,Feb,Mar,Apr,May,June,July,Aug,Sep,Oct,Nov,Dec)
(1)用线性探测开放定址法处理冲突;
⑵用链地址法处理冲突;
⑶求出以上两个哈希表在等概率情况下,查找成功、杏找不成功时的平均杏找长度(不成功时用公式计算)。
设哈希函数为H(key)=|key的笫一个字母在字母表的序号/2|
第十章内排序
◎木章小结:
排序的基本概念
排序的基木概念关键字、初始关键字排列关键字比较次数、数据移动次数
稳定性附加存储
插入排序
宜接插入排序、折半插入排序的过程
直接插入排序和折半插入排序的算法
排序的性能分析
当待排序的关键字序列已经基本有序时,用直接插入排序最快
选择排序
肯接选择排序、锦标赛排序、堆排序的过程
直接选样排序和堆排序的算法
三种选择排序的性能分析
用直接选择排序在一个待排序区间中选出最小的数据时,与区间第一个数据对调,不是顺次后移。
这导致方法不稳定。
交换排序
起泡排序和快速排序的过程
起泡排序的算法
快速排序的递归算法和用栈实现的非递归算法
快速排序是一个递归的排序法
当待排序关键字序列己经基木有序吋,快速排序显箸变慢。
二路归并排序
二路归并排序的过程
二路归并排序的非递归算法
该算法的性能分析
归并排序可以递归执行
归并排序需要较多的附加存储。
归并排序对待排序关键字的初始排列不敏感,故排序速度较稳定。
◎课堂笔记及重要知识点:
排序的分类
将欲处理的记处全部心放到内心中排庁,数UWJ被随机存取
插入式排序
内部排序
交换式排序选择式排序归并排序展数排序
待排序的记录太多,不能同时存放内存中,排序过程盂要借助外存(比如:
硬盘)来
I定成,记录碍要在内存和外存间移动。
外部排序厶—
比较标准
•时间复杂度
•空间父杂度
•稳定性
稳定性排圧过后能使关键字相等的记
录保持原顺序中的相对位汽
4?
32
56
49
27
27
32
49
49
56
不稳定性排序过麻不能使关键字相等的
记录保持原顺序中的相对位代
各种排序算法的性能比较
排序方法
最好时何
半均时何
放坏时何
输助空间
稳定性
11接插入川
O(n)
O(m)
0
(2)
0
(1)
稳定
希尔排序
0(n13)
0
(1)
不稳定
££接选择排序
O(n2)
0(")
O(n2)
0
(1)
堆井序
O(nlog2n)
O(nlog2n)
O(nlog2n)
0
(1)
不稳定
H泡排序
O(n)
O(n2)
0(”)
0
(1)
稳定
快速排序
O(nlog2n)
O(nlog2n)
O(n2)
O(log2n)
不稳定
归并排序
O(nlog2n)
O(nlog?
n)
O(nlog2n)
O(n)
稳定
基数井序
O(mn)
O(mn)
O(mn)
q(n)
—
◎课后思考题及解答:
1、已知一组记录为
(46,74,53,14,26,38,86,65,27,34),给出采用下列排序时每一趟的排序结果:
1)直接插入排序2)快速排序法3)归并排序法
2、试以单链表为存储结构实现简单选择排序的算法。
复习题
选择题
1.一棵具有n个结点的完全二叉树的树高度(深度)是(A)
A)Llog2n」+lB)log2n+1C)Llog2n」D)log2n-l
2.有关二叉树下列说法正确的是(B)
A)二叉树的度为2B)-棵二叉树的度可以小于2
C)二叉树中至少有一个结点的度为2D)二叉树中任何一个结点的度都为2
3.二义树的第I层上最多含有结点数为(C)
A)21B)2,x-lC)21'1D)2'-1
4.具有10个叶结点的二叉树中有(B)个度为2的结点
A)8B)9C)10D)11
5.由3个结点可以构造出多少种不同的二叉树?
(D)
A)2B)3C)4D)5
6.引入二义线索树的目的是(A)
A)加快查找结点的前驱或后继的速度B)为了能在二叉树中方便的进行插入与删除
C)为了能方便的找到双亲D)使二叉树的遍历结果惟一
判断题
1.二义树是度为2的有序树()
2.完全二叉树一定存在度为1的结点()
3.深度为K的二叉树中结点总数()
4.完全二叉树屮,若一个结点没有左孩子,则它必是树叶()
5.用二叉链表存储n个结点的二叉树时,结点的2n个指针中有n+1个空指针()
6.完全二叉树的存储结构通常采用顺序存储结构()
应用题
1、己知一棵二义树的后序遍历序列为DABEC,中序遍历序列为DEBAC,写出它的先序遍历序列。
2、己知一棵二叉树的中序序列和后序序列分别为GLDHBEIACJFK和LGHDIEBJKFCA
(1)给出这棵二义树;
(2)转换为对应的森林。
3、设有正文AADBAACACCDACACAAD,字符集为A,B,C,D,设计一套二进制编码,使得上述正文的编码最短。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构教学资料 数据结构 教学 资料 410 复习资料 doc