数据结构与算法学习辅导及习题详解.张乃孝版.04年10月
经过几年的努力,我深深体会到,编写这种辅导书要比编写一本湝通教材困难得多。
但愿我的上述理想,在本书中能够得以体现。
本书的组织
本书继承了《算法与数据结构C语言描述》的主要编写思想,并采用了与之
类似的结构;但是根据广大考研读者的需要,补充了原书缺省的内容,使之成为一木比
较完整的包括教、学、习题和上机的辅导资料。
全书共分9章,每章又至少分为5节。各节的内容安排如下
第1节是“主要内容与方法”。它参考[4]的内容,给出本章的主要教学内容和教学
方法;指出本章的重点、难点和注意事项。各章的第1节均以电子课件的形式给出
是后面习题解答的基础,可以作为学生复习的大纲,也可以作为老师讲课的胶片
从第2节开始是习题和参考答案。从国内外重点教材[l~1的习题和各种考试题目
中,精心挑选了五百多道题目,这些题目覆盖了全部教学大纲的要求,可以分为以下五
类
·“简单题”(各章的第2节)。主要对本章的基本知识和概念通过简单再现(是非
选择、填空和简答等)的形式帮助学生进行复习和检查
“表示题”(各章的第3节)。主要通过图、表或者文字方式来表述答题。例如,
对具体数据的逻辑结构、存储结构加以说明,或者是对具体算法用实例模拟运行
过程,等等。在有些章中,表示题比较丰富,所以乂按照知识点分为小节。表示
题是考试的重点,通常的考卷中这部分占一半以上
算法题”(各章的第4节)。主要是锻炼和提高学生的算法设计和分析能力。这
通常是学习的难点,也是决定考试能否取得好成绩的关键。本书对于这些题目的
解答给出了详细的分析
●“应用与上杌题”(各章的第5节)。包括经常出现在各种教材中的应用问题。本
书的这一节希望在上机实习的教学中起到一定的指导作用。在第3章的解答中,
还提供一个上机报告,希望对学生有参考价值
每章的最后,可能有用“*”标记的第6节(甚至第7节)是“扩充题”。补充了
与本章相关,而在教材[4中没有讨论的内容。例如与文件、存储管理、稀疏矩阵、
义表、优先队列、跳跃表和集合等相关的习题和解答,专门提供给准备考研的
读者参考。
除了简单题,其他各类题目中的重点题都用“☆”标记,掌握这些题目,有助于学
生理解数据结构与算法的本质,希望读者认真对待;用“▲”标记的是难题,供考研的
读者练习;没有做标记的是选做题。
读者对象与使用
木书可以提供给使用各种教材讲授“数据结构”相关课程的老师参考,也可以提供给
参加相关课程各种层次学习和考试的学生参考。特别对于以下两类读者实用价值更强。
1)报考计算机及相关专业研究生的考生。无论基础如何,选择本书复习应考,将
会达到事半功倍的效果。建议考硏的学生,认真理解每章第1节的内容,把已经掌握的
知识加以总结;亢成各章所有简单题、带“☆”的表示题、算法题和补充题;然后在时
间许可的情况下,尽可能选做带“▲”的难题和其他题
(2)以《算法与数据结构—C语言描述》为相关课程教材的教师和学生。本书包
含原教材的精华和全部的习题解答。建议大学本科(或者专科)的学生,使用每章的第1
节作为复习大纲;选择第2节的简单题和第3,4节带“☆”的表示题和算法题巩圊学到
的基本知识;有条件和希望深造的回学可以参考第一条。大专(或者非理工科本科)学
生,使用本书复习时,可以跳过书中所有用“米”标记的章节
另外,本书收编的大都是基本的习题,为了更充分地复习应考,读者可以白己对其
进行灵活的变化和补充,方法如下
(1)各章的“主要内容与方法”里,选择重要的概念,采用简单题的任何一种形式
是非、选择、填空和简答)就可以得到大量对应的简单考题。
2)把所有表示题的实际对象,更换成新的数据或者算法,就可以得到不同的表示
型考题。例如,用不同的散列函数、不同的处理碰撞方法,处理不同数据就得到不同的
散列表考题。
3)书中每个算法习题,变化为“读算法理解功能”、“算法关键部位填空”、“算法
复杂性分析”、“算法思想陈述”或“算法的改进”等形式。这也是实际考卷中经常使用
的方法
本书中各章的第1节“主要内容与方法”、所有算法题和上机题解答的程序代码、部
分数据结构试卷样本和部分与本课程相关的(著者发表的)论文均可在电子工业出版社
华信教育资源网(www.hxedu.com.cn)上获得。
感謝
資先要感谢的是我所有的学生,没有他们的认真听课和积极且八泛的发问,没有
他们提交的丰富多彩的作业、上机报告和考卷,就没有编写木书的源泉和动力;特别
要感谢的,是那些在我讲课期间,反反复复帮助我选题,做题,改题和上机编程、调
试的本科生、研究生和助教们,是他们的原作给本书提供了坚实的基础,本书的每个
题目至少都经过他们三人以上的处理:我真诚地感谢所有支持我编写此书的老师、同
事、朋友和亲人,感谢他们数年来对我的关心、理解、爱护和帮助;最后要提前感
谢本书的所有读者,你们的宝贵意见将是使本书不断提高和完善的主要保证。
本书虽是著者多年教学经验的积累,但整理出版与读者共享是不久前的决定。是电
子工业出版社和李岩博十的大力支持,才使得本书能在较短的时间里与读者见面。时间
仓促、工作量大,错误和疏忽之处在所难免,衷心希望广大读者批评指正。
张乃孝
znx@pku.edu.cn
204年8月于北大
目录
第1章绪论
1主要内容与方法…
号·。ψ司·甲q司
1.1.1问题求解
司●,·甲p■鲁备
1.2抽象数据类型
1.13数据结构………
●鲁■画4●dd●··●
1.1,4算法……
115讨论
12简单题
■D4·■·●自也即·●·辛申●4鲁◆會◆
12.1是非题
即曲·最命●●p◆身■■■■■■■■■口
n●q中··日■卡····●·◆ψ合ppp自卓p●p自看血
122选择题…
■·。“▲血省·■●山··辛◆罪
●鲁●@●电申自自●
2346667
1.2.3填空题
··●■q■音pp■·爭·pp自●日·◆■日·.··"日日·tb自"
1.2.4简答题
a·舀“·sP·4.·
●●●●即县■命自●日pp■■
……7
13数据结构题
=甲as‘a···B·.··
14算法题
看●鲁啁■食单甲即◆曾
1.5问题求解题
1音·
■《看看↓
身···罪暴备幽
16
1.6文件
.4:a『日日日中『冒
■■●●·当“◆●·讠自声·自自西··p吾●··
23
第2章线性表
………………26
21主要内容与方法…
…………26
211线性表的概念…………
27
21.2顺序表
中4●as喜·a“s-。p.·日日sa·日·.日日●··t·◆······b··自
…27
21.3单链表
●●4■·◆b命血备
4s■●·····咖··‘▲‘白■自
29
2.14讨论
▲個■
t●
●罪看单卓●◆
32
22简单题
3
22.1选择题…
33
222填空题……
……………………33
2,23简答题
◆。◆罪q·●●p■昌单·q罪·号··
···4··4·‘‘‘·4··◆·····
4
23表示题
34
24算法题…
●s●a甲甲◆中4·一·‘‘·“··“自■
……………35
2.5应用与上机题
aa·4p·":·◆·····
………56
2.6动态存储管理
▲自日吾命命命p日日日自自咖·●●·申自备
看◆■■
65
第3章串*
●看备b。4●tb@
■·■·pa■聊聊昌●●v号b号即命
70
31要内容与方法
3.1.1字符串及其运算…
1.2字符串的表示………
■■■■■■■■■■■■■■■■
71
3.1.3模式匹配
72
3.14讨论………………
75
3,2筒单题
如◆·◆◆········群············=··日日日日自
76
3.3表示题
76
34算法题
■郾郾6D曲
3.5应用与上机题
…87
第4章栈与队列
···☆···········日···曾导甲·······
41主要内容与方法…
95
4.1.1栈
D“日············.·······““·°
4.1.2栈的实现
……96
4.1.3栈与递归
……………98
4.1.4队列
▲■·备·自自自音●D會卩旱
■■即司
A9
4..5队列的实现
4.1.6讨论
●●●●●●●●■鲁·自●
●辛·卓·Dp·昌●b
········
101
4.2简单题
■■■■
………102
4.2.1是非题…
∴…102
4.2.2选择题∵
…………102
42.3填空题
命·●甲■自血
●自自昏
∴…………102
4.,24简答题…
……103
43表小题…
郾■血
·;●自·命●●·早·即···
103
44算法题
t··曾。◆●●●即p●
●■4↓◆命·
4.5应用与上机题………
119
第5章树与二叉树
150
5主要内容与方法
150
5.1.1树的概念……
15I
5.12树的实现
e●●血自
∴…………152
51.3二义树的概念…
■●q●
155
514叉树与树(林)的对应
尋·◆日·。·“日p日··日◆自●●◆···◆
157
5,1.5二义树的实现
…158
5.1.6最优二叉树…
bb自p司■■■■咖
159
5.17讨论
…161
5.,2简单题………………
●p量4·p自p讠■
……162
52.1是非题…
·看音↓b■●咱
162
522选择趣
162
523填空题
·◆音
65
524简答题
……166
5.3表示题
●●■备孕·《●q即■●督P
5.31逻辑
●口·●●看备4p和b■■b■··自萨幽山·4·合日甲44·t
·167
5.32周游…
■■看■鲁看■●··會●●鲁●●···即■●·◆·◆◆ψ;■鲁昏看甲■晕·
173
53.3存储…………………………………178
5.34转换
●命◆··中■■甲中·p·自▲“··自自自▲“·自
181
535哈夫曼树
●·婚备晶·■pb·,日Pp●p··ma"甲幽甲甲甲·山山
▲●p也自自量画血會鲁
183
5.36表达式树
4d命
命命■■p■■·會·■p··■●■會●自p4·;·曾·■●●音會
187
54算法题…
189
5.5应用与上机题…
…………216
第6章字典与检索…
226
61主要内容与方法
………226
6.1.1基本概念……
……227
6.12顺序表示…
山■
227
6.13散列表示∴…
b口■·申看●●鲁争
228
64二叉排序树表示
…230
61.5AVL树表示…
—■·幽亠·亠〓·=·
●●●◆↓q中◆··。。甲·。日日即日白····命◆●····
233
6.1.6索引表示
6.1.7讨论
◆看。D■郾D■■帽p自自自■
239
6.2简单题
b咱■■■■·■即自音电。ψ◆自■音●●盘·●b
240
621是非题…
240
6,2.2选择题
240
6.2.3填礻题
合如自自自·●昏··◆··4“日“·申申···◆◆哥···◆●导··音.·
242
6.24简答题
·=“·“···*“·“····
4242
6.3表示题
244
63.1顺序表示
·s··◆日··"a·自●····◆···◆◆备·······‘4B日····“··☆品昌喜·吾◆吾鲁
244
632散列表示……
244
63.3二叉排序树表示
D····着···■●4◆鲁b·●●
258
6.34AVL树表示
263
6.3.5索引表示
∴…270
64算法题…
●●·自。ψ·ψ聊··司旷自日自■
6.5应用与上机题
…………294
6.6集合
中甲斗
303
第7章排序
326
7.1主要内容与方法
326
7.11基本概念……
327
7.1.2插入排序
327
713选择排序
329
7.1.4交换排序……
◆聊看略
…………330
71.5分配排序…
●·;··:·····◆◆·····4········晋··自··"·音B·日日■
………………332
716归并排序
……333
717讨论
…………334
72筒单题
■·■自。罪··自即●咖會自自會自自自·4。d●●自····●食旨··●●●●··
336
72.1选择题…………
………………336
722填空题……
339
723简答题
………………339
73表小题
s342
7.3.1排序实例…
342
732堆…
bbp血■●■口■_自4自●@●
348
74算法题…
md■口血
354
75应用与上机题
画■■■备■画a画■口nee鲁睿咖咖●·●鲁命●●p■音自◆··看·;·■
372
76优先队列*………
●p口●●ψ备p即p◆自音·↓日4p●↓即命·■者备··●·4卓●甲
377
第8章图
387
8.1主要内容与方法…
·备喜喜◆··阜■
……………387
81.1基本概念……
………………………………388
81.2图的基本运算……
b◆4····●··日
●●甲中音血
388
81.3图的周游
388
8.1.4图的存储…
●●個··◆
390
815最小生成树…
·←。··s●●●·◆·画画“—▲▲亠p■■■·自自命●自↓自4■··日4命·日·
392
81.6最短路径…
394
81.7AOV与AOE网
香●自b●·●●单◆·是↓↓·甲甲amaa幽自·『····自●·bD自4●
396
818讨论……
……………………………397
82简单题
821是非题
自普郾■●p口看看。甲督■曹ψ·申◆
暗中甲自·q·●·咖
399
822选择题
……………399
823填空题
p●口D■
400
824简答题…………
400
83表示题
401
831逻辑
832存储
403
83.3周游
41
834最小生成树……
414
83.5最短路径…
d●●●
b着音·■自·↓帽q【·自“◆·●→●噜
417
83.6AOV与AOE网”…………………………423
84算法题
ψ■命●』。■●■■■画着■■■■■·中音『鲁ψ鲁命命◆
………………425
85应用与上机题
命bp4●
……437
86广义表”
甲甲==·山·
4·自日·日4晋
449
87稀疏矩阵
…………………………453
第9章算法分析与设计*……
458
91主要内容与方法
……………458
91.1算法分析技术
……………………459
912算法设计技术…………
●自舞。。d■■。■■■■
913讨论…
92简单题
465
92Ⅰ选择题
922填空题……
;aas甲甲.b4··a4◆:·“a日a····P··●.··日·4··
465
93算法分析题
·■·“甲自自·合音◆●D·
…466
94算法设计题
·
472
9.5应用与上机题…
482
参考文献
自·备b4甲甲=4aD··◆自···看····自4·