资源详情

图解数据结构——使用Java(第2版)

图解数据结构——使用Java(第2版)-电子书下载


作者: 吴灿铭/胡昭民
出版社: 清华大学出版社
出版年: 2020-2-1
定价: 69
装帧: 平装
ISBN: 9787302545811

下载次数:1


本站推荐

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

本书是一本综合讲述数据结构及其算法的入门书,内容浅显易懂、逻辑严谨,力求适用性兼顾教师教学和学生自学。 全书从基本的数据结构概念开始讲解,以新版的Java语言详细诠释数组结构、队列、堆栈、链表、树结构、图结构、排序和查找等数据结构的基础知识,书中收录了精华的算法及范例程序的实现过程,辅以丰富的图示解析。全书的范例程序均采用“Eclipse”Java IDE集成开发工具进行编译、执行、测试及调试。此外,本书各章末尾都安排了配合教学内容和选自各类考试的习题,并在附录中提供了解答,可供读者测试学习效果。 本书图文并茂,叙述简洁、清晰,范例丰富、可操作性强,针对具有一定编程能力又想提高编程“深度”的非信息专业类人员或学生,是一本数据结构普及型的教科书或自学参考书。

吴灿铭,现任荣钦科技股份有限公司执行长,美国Rochester Institute of Technology计算机科学研究所毕业,长期从事信息教育及计算机图书写作的工作,计算机图书著作包括计算器概论、数据结构、办公室电子数据处理、互联网等相关题材,并监制过多套游戏以及教学软件的研发。

第1章数据结构与算法1
1.1数据结构的定义1
1.1.1数据与信息2
1.1.2数据的特性2
1.2算法3
1.2.1到处都是算法4
1.2.2算法的定义5
1.3算法效能分析7
1.3.1Big-oh8
1.3.2Ω(Omega)11
1.3.3θ(Theta)11
1.4常见算法介绍11
1.4.1分治法12
1.4.2递归法12
1.4.3贪心法16
1.4.4动态规划法17
1.4.5迭代法18
1.4.6枚举法19
1.5程序设计简介20
1.5.1程序开发流程20
1.5.2结构化程序设计21
1.5.3面向对象程序设计22
课后习题24
第2章数组结构26
2.1线性表简介26
2.2认识数组27
2.2.1一维数组28
2.2.2二维数组30
2.2.3三维数组33
2.2.4n维数组36
2.3矩阵37
2.3.1矩阵相加38
2.3.2矩阵相乘40
2.3.3转置矩

42
2.3.4稀疏矩阵44
2.3.5上三角形矩阵47
2.3.6下三角形矩阵52
2.3.7带状矩阵57
2.4数组与多项式57
课后习题59
第3章链表61
3.1动态分配内存61
3.2单向链表62
3.2.1建立单向链表64
3.2.2单向链表节点的删除68
3.2.3单向链表插入新节点72
3.2.4单向链表的反转77
3.2.5单向链表的功能80
3.2.6多项式链表表式法81
3.3环形链表87
3.3.1环形链表新节点的插入88
3.3.2环形链表中节点的删除88
3.3.3环形链表的串联91
3.3.4稀疏矩阵的环形链表表示法95
3.4双向链表97
3.4.1双向链表的定义97
3.4.2双向链表节点的插入98
3.4.3双向链表节点的删除99
课后习题102
第4章堆栈104
4.1堆栈简介104
4.1.1用数组实现堆栈105
4.1.2用链表来实现堆栈110
4.2堆栈的应用114
4.2.1汉诺塔问题115
4.2.2老鼠走迷宫121
4.2.38-皇后问题126
4.3算术表达式的表示法(即求值法)129
4.3.1中序表示法求值130
4.3.2前序表示法求值131
4.3.3后序表示法求值132
4.4中序法转换为前序法133
4.4.1二叉树法133
4.4.2括号法133
4.4.3堆栈法135
4.5前序与后序表达式转换成中序表达式140
4.5.1括号法140
4.5.2堆栈法141
课后习题143
第5章队列145
5.1认识队列145
5.1.1队列的基本操作146
5.1.2用队列实现数组146
5.1.3用链表实现队列150
5.2队列的应用152
5.2.1环形队列152
5.2.2双向队列156
5.2.3优先队列159
课后习题160
第6章树结构161
6.1树的基本概念162
6.2二叉树简介164
6.2.1二叉树的定义165
6.2.2特殊二叉树简介166
6.3二叉树的存储方式168
6.3.1一维数组表示法168
6.3.2链表表示法170
6.4二叉树的遍历172
6.4.1中序遍历173
6.4.2后序遍历174
6.4.3前序遍历174
6.4.4二叉树遍历的实现176
6.4.5二叉运算树179
6.5二叉树的高级研究184
6.5.1二叉排序树184
6.5.2二叉搜索树188
6.5.3线索二叉树191
6.6树的二叉树表示法196
6.6.1树转化为二叉树196
6.6.2二叉树转化为树198
6.6.3树林转化为二叉树200
6.6.4二叉树转换为树林201
6.6.5树与树林的遍历201
6.6.6确定唯一二叉树205
6.7优化二叉搜索树207
6.7.1扩充二叉树207
6.7.2霍夫曼树208
6.8平衡树210
6.8.1平衡树的定义210
6.8.2B树212
课后习题212
第7章图结构216
7.1图的简介217
7.1.1图的定义217
7.1.2无向图218
7.1.3有向图219
7.2图的数据表示法221
7.2.1邻接矩阵法221
7.2.2邻接链表法225
7.2.3邻接复合链表法229
7.2.4索引表格法231
7.3图的遍历233
7.3.1深度优先遍历法233
7.3.2广度优先遍历法236
7.4生成树239
7.5最小生成树241
7.5.1Prim算法241
7.5.2Kruskal算法243
7.6图的最短路径248
7.6.1单点对全部顶点——Dijkstra算法与A*算法248
7.6.2两两顶点间的最短路径——Floyd算法254
7.7AOV网络与拓扑排序258
7.8AOE网络262
课后习题263
第8章排序267
8.1排序简介268
8.1.1排序的分类268
8.1.2排序算法分析269
8.2内部排序法269
8.2.1冒泡排序法270
8.2.2选择排序法274
8.2.3插入排序法277
8.2.4希尔排序法280
8.2.5合并排序法283
8.2.6快速排序法283
8.2.7堆积排序法287
8.2.8基数排序法293
8.3外部排序法296
8.3.1直接合并排序法297
8.3.2k路合并法305
8.3.3多相合并法305
课后习题306
第9章查找310
9.1常见的查找方法311
9.1.1顺序查找法311
9.1.2二分查找法313
9.1.3插值查找法316
9.1.4斐波拉契查找法319
9.1.5哈希查找法321
9.1.6常见的哈希函数322
9.2碰撞与溢出问题的处理325
9.2.1线性探测法325
9.2.2平方探测法327
9.2.3再哈希法327
9.2.4链表法329
9.2.5哈希法综合范例331
课后习题334
附录AJava9开发环境简介336
附录B课后习题与解答349