描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302586425
本书精解数据结构重点知识、典型习题及其解答思路,对数据结构的主要内容进行梳理,并筛选历年典型的计算机专业考研试题、算法竞赛试题、软考试题以巩固所学的知识。本书适合C语言数据结构与算法的初学者、考研人员、算法竞赛人员、软考人员以及高校相关课程的师生参考。
本书精讲数据结构与算法,对常见的算法及实现代码进行详细讲解,并配合具体的图表和教学视频,使读者轻松掌握数据结构知识并深入理解其中的算法思想。 本书共分8章,内容包括线性表、栈、队列、串、数组和广义表、树、图、查找、排序等。本书知识点涵盖全面,案例典型。本书习题大部分来自各大名校考研和著名软件公司的笔试面试题目,是作者多年来的教学实践经验的总结。本书案例代码全部在Visual C 开发环境运行通过,并配套教学视频,方便读者自学。 本书适合C语言数据结构与算法的初学者、数据结构与算法课程考试的学生、考研人员、算法竞赛选手,也可以作为高等院校和培训机构计算机相关专业师生的教学参考书。
第1章 绪论 1
1.1 知识点 1
1.2 内容精要 1
1.2.1 数据结构的基本概念 1
1.2.2 数据的逻辑结构与存储结构 2
1.2.3 算法的特性与算法的描述 3
1.3 典型试题精选与解析 8
1.3.1 典型试题 8
1.3.2 答案解析 11
第2章 线性表 14
2.1 知识点 14
2.2 线性表的内容精要(1)─线性表的顺序表示 14
2.2.1 线性表的定义 14
2.2.2 线性表的顺序表示与实现 15
2.2.3 典型例题解析 20
2.3 顺序表的典型试题精选与解析 25
2.3.1 典型试题 25
2.3.2 答案解析 27
2.4 线性表的内容精要(2)─线性表的链式表示 33
2.4.1 单链表的存储结构 33
2.4.2 单链表上的基本运算 35
2.5 循环单链表 40
2.5.1 循环链表的链式存储 40
2.5.2 循环链表的合并操作 41
2.6 双向链表 42
2.6.1 双向链表的存储结构 42
2.6.2 双向链表的插入和删除操作 43
2.6.3 链式存储结构与顺序存储结构的优缺点 45
2.6.4 典型例题解析 45
2.7 线性表的典型试题精选与解析 51
2.7.1 典型试题 51
2.7.2 答案解析 57
2.8 归纳总结 69
第3章 栈与队列 70
3.1 知识点 70
3.2 栈的内容精要 70
3.2.1 栈的定义和术语 70
3.2.2 栈的特性 71
3.2.3 栈的存储结构 71
3.2.4 栈与递归 74
3.2.5 典型例题解析 77
3.3 栈的典型试题精选与解析 84
3.3.1 典型试题 84
3.3.2 答案解析 87
3.4 队列的内容精要 103
3.4.1 队列的定义和术语 103
3.4.2 队列的顺序存储 104
3.4.3 队列的链式存储 107
3.4.4 链式队列的基本运算 109
3.4.5 双端队列 110
3.4.6 典型例题解析 112
3.5 队列的典型试题精选与解析 114
3.5.1 典型试题 114
3.5.2 答案解析 117
3.6 归纳总结 130
第4章 串、数组与广义表 131
4.1 知识点 131
4.2 串的内容精要 131
4.2.1 串的定义 131
4.2.2 串的表示与实现 132
4.2.3 串的模式匹配 135
4.2.4 典型例题解析 141
4.3 串的典型试题精选与解析 145
4.3.1 典型试题 145
4.3.2 答案解析 148
4.4 数组的内容精要 151
4.4.1 数组的定义 151
4.4.2 数组的顺序表示与实现 152
4.4.3 特殊矩阵的压缩存储 153
4.4.4 稀疏矩阵的压缩存储 155
4.4.5 典型例题解析 157
4.5 数组的典型试题精选与解析 161
4.5.1 典型试题 161
4.5.2 答案解析 165
4.6 广义表的内容精要 171
4.6.1 广义表的定义 171
4.6.2 广义表的头尾链表存储结构及基本运算 172
4.6.3 广义表的扩展线性链表存储 176
4.6.4 典型例题解析 179
4.7 广义表的典型试题精选与解析 186
4.7.1 典型试题 186
4.7.2 答案解析 187
4.8 归纳总结 189
第5章 树 191
5.1 知识点 191
5.2 树的内容精要(1)─树和二叉树的定义及性质 191
5.2.1 树的定义和基本概念 191
5.2.2 树的逻辑表示 193
5.2.3 二叉树的定义 193
5.2.4 二叉树的性质 195
5.2.5 二叉树的存储表示与实现 196
5.3 树的典型试题精选与解析(1) 198
5.3.1 典型试题 198
5.3.2 答案解析 199
5.4 树的内容精要(2)─二叉树的遍历和线索化 200
5.4.1 二叉树的遍历 200
5.4.2 线索二叉树 207
5.4.3 典型例题解析 211
5.5 树的典型试题精选与解析(2) 213
5.5.1 典型试题 213
5.5.2 答案解析 219
5.6 树的内容精要(3)─树的存储结构和树、森林的转换 233
5.6.1 树的存储结构 233
5.6.2 树、森林与二叉树的转换 235
5.6.3 树和森林的遍历 238
5.6.4 哈夫曼树 239
5.6.5 典型例题解析 241
5.7 树的典型试题精选与解析(3) 249
5.7.1 典型试题 249
5.7.2 答案解析 251
5.8 归纳总结 257
第6章 图 258
6.1 知识点 258
6.2 图的内容精要(1)─图的定义及相关概念 258
6.2.1 图的定义和基本概念 258
6.2.2 图的存储结构 261
6.3 图的典型试题精选与解析(1) 266
6.3.1 典型试题 266
6.3.2 答案解析 268
6.4 图的内容精要(2)─图的遍历 270
6.4.1 图的深度优先搜索 270
6.4.2 图的广度优先搜索 272
6.4.3 典型例题解析 273
6.5 图的典型试题精选与解析(2) 279
6.5.1 典型试题 279
6.5.2 答案解析 281
6.6 图的内容精要(3)─图的应用 293
6.6.1 小生成树 293
6.6.2 AOV网与拓扑排序 298
6.6.3 AOE网与关键路径 301
6.6.4 短路径 303
6.6.5 典型例题解析 309
6.7 图的典型试题精选与解析(3) 313
6.7.1 典型试题 313
6.7.2 答案解析 316
6.8 归纳总结 322
第7章 查找 323
7.1 知识点 323
7.2 查找的内容精要(1)─查找的定义及相关概念 323
7.2.1 查找的基本概念 323
7.2.2 顺序表的查找 324
7.2.3 有序顺序表的查找 325
7.2.4 索引顺序表的查找 327
7.3 查找的典型试题精选与解析(1) 329
7.3.1 典型试题 329
7.3.2 答案解析 331
7.4 查找的内容精要(2)─动态查找 334
7.4.1 二叉排序树 334
7.4.2 平衡二叉树 339
7.4.3 B-树与B 树 343
7.5 查找的典型试题精选与解析(2) 347
7.5.1 典型试题 347
7.5.2 答案解析 349
7.6 查找的内容精要(3)─哈希表 354
7.6.1 哈希表的定义 354
7.6.2 哈希函数的构造方法 355
7.6.3 处理冲突的方法 356
7.6.4 哈希表应用举例 358
7.7 查找的典型试题精选与解析(3) 362
7.7.1 典型试题 362
7.7.2 试题分析 363
7.8 归纳总结 366
第8章 排序 367
8.1 知识点 367
8.2 排序的内容精要 367
8.2.1 插入排序 367
8.2.2 选择排序 372
8.2.3 交换排序 379
8.2.4 归并排序 383
8.2.5 基数排序 384
8.3 排序的典型试题精选与解析 387
8.3.1 典型试题 387
8.3.2 答案解析 389
8.4 归纳总结 398
参考文献 400
本书的组织分为两部分:数据结构重点知识的总结和典型习题及分析解答。书中首先对数据结构主要内容进行梳理,然后通过筛选历年计算机专业考研试题、各种竞赛试题、软考试题等具有典型的试题巩固所学知识。本书重视数据结构核心思想的讲解,同时兼顾算法实践的理解和掌握,每章都提供了相关典型案例及其完整代码,方便读者学习数据结构算法思想。希望本书能给正在学习数据结构和打算考研的读者朋友有所帮助和启发。
本书的部分习题答案是针对经典数据结构教材进行分析和解答的,此外,还精选了历年全国计算机专业考研试题和部分名校试题。编写本书和教学的过程也是作者重新学习的过程,一个深切的感受就是无论是打算考研,还是参加各种竞赛,数据结构知识是计算机相关专业学习和软件开发的基础,要想学好它,除了认真阅读教材、认真思考外,还需要多动手、多上机、调试程序,只有这样,才能把数据结构真正学好。
本书的课后习题解答均花费大量时间认真分析、严密求解得到。为了求解某个题目,可能需要认真研读算法,例如在求解短路径、关键路径时,就需要真正理解算法思想和算法代码的描述,只有真正理解了,才能知道求解问题时每一个变量和每一个修正过程的含义。本书所提供的算法均经过精心调试运行,虽然在调试程序上花费不少时间,但是感觉每一次都有很大收获,因为在调试程序的过程中总会出现一些新的错误,在解决这些问题之后,对算法才会有更深入的理解,同时也提高了程序调试技术。调试程序是一件花费时间的事情,但是只有自己亲自动手调试,才能深刻理解算法思想,发现错误和不足,在调试程序的过程中,自身水平才能得到提高。
本书的许多案例选自历年全国考研试题、竞赛试题和清华大学、华中科技大学、西北大学、西安电子科技大学、南京航空航天大学、南京理工大学、哈尔滨工业大学等著名高校考研试题,这些题目非常具有代表性,题目的设计涵盖数据结构的各个方面,同时考查了数据结构的基础知识和算法设计思想。本书内容及学习方法
本书内容包括数据线性表、栈、队列、串、数组和广义表、树、图、查找和排序等,涵盖数据结构的主要知识、典型例题、算法实现和习题解析,是一本计算机专业人士学习数据结构与算法的参考用书,适合作为计算机考研和数据结构学习辅导用书。
对于初学者来说,数据结构这门课有许多抽象的概念,不是太容易掌握。万事开头难,只要掌握了学习方法和技巧,学习任何东西都会变得很容易,学习数据结构也是如此。要想学好数据结构,首先应该有信心,要有战胜困难的决心,不要有畏惧心理,一开始每个人都会遇到困难,重要的是坚持,不放弃。“路虽远,行则将至;事虽难,做则必成。”任何事情都是这样,学习亦如此。其次就是要掌握好C语言,C语言是基础,因为本书中的算法都是用C语言描述的,即使之前没有掌握好C语言也没有关系,读者可以边学数据结构,边巩固C语言知识。
不少读者朋友在学习数据结构时,由于缺乏对高级程序设计语言的理解和掌握,造成在学习数据结构课程时存在很多疑惑和不解,这个是很多读者遇到的问题。目前大多数数据结构采用C语言描述,很多同学对指针和结构体的用法不甚清楚,因此在学习数据结构时,对算法的理解往往一知半解,弄不清楚为什么使用要一级指针和二级指针,这些疑惑在开始学习数据结构时就产生了,严重影响后续学习的积极性和效果。因此,建议读者朋友在遇到这些困难时,一定要复习一下C语言基础,尤其是指针和结构体的相关知识。另外,通过多上机调试程序,对学习和理解算法十分有帮助。
在阅读本书过程中,可以边看书,边听视频讲解,视频讲解主要针对本书中的难点和重点,每学完一部分内容,可通过调试本书配套的代码,认真领会算法的思想,并思考为什么要这样实现,从而加深对数据结构概念和算法的理解。
源码、教学视频下载
本书配套的源码与教学视频,需用微信扫描右边二维码获取,可按提示把链接转发到自己的邮箱中下载。如果有疑问,请联系[email protected],邮件主题为“数据结构习题精解”。
致 谢
参加本书编写的有陈锐、张建伟、马军霞、马欢、谷培培、张亚洲、范艳焕和朱少林。其中,张建伟编写第1章,张亚洲编写第2章,朱少林编写第3章,谷培培编写第4章,马军霞编写第5章,陈锐编写第6章,马欢编写第7章,范艳焕编写第8章。
由于时间仓促,加上作者水平有限,书中难免存在一些不足,恳请读者批评指正。读者朋友可通过下载资源中提供的电子邮箱与我们联系。祝愿各位在阅读本书的过程中有一个愉快的旅程。
在本书的写作过程中,参阅了大量相关著作、教材,书后已给出参考文献供读者参考,在此向各位原作者致敬!在本书出版过程中,得到了清华大学出版社和郑州轻工业大学的大力支持和帮助,在此表示衷心感谢。
作 者
2021年5月
评论
还没有评论。