图书介绍
数据结构与抽象 Java语言描述2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (美)弗兰克M.卡拉诺(Frank M.Carrano),(美)蒂莫西M.亨利(Timothy M.Henry)著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111567288
- 出版时间:2017
- 标注页数:717页
- 文件大小:220MB
- 文件页数:741页
- 主题词:抽象数据结构-高等学校-教材;JAVA语言-程序设计-高等学校-教材
PDF下载
下载说明
数据结构与抽象 Java语言描述PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
引言 组织数据1
序言 设计类3
P.1 封装3
P.2 说明方法5
P.2.1 注释5
P.2.2 前置条件和后置条件5
P.2.3 断言6
P.3 Java接口7
P.3.1 写一个接口8
P.3.2 实现一个接口9
P.3.3 接口作为数据类型11
P.3.4 派生一个接口12
P.3.5 接口内命名常量13
P.4 选择类14
P.4.1 标识类15
P.4.2 CRC卡15
P.4.3 统一建模语言16
P.5 重用类17
第1章 包22
1.1 什么是包22
1.2 说明一个包23
1.3 使用ADT包30
1.4 像使用自动贩卖机一样使用ADT33
1.5 ADT集合34
1.6 Java类库:接口Set35
Java插曲1 泛型39
第2章 使用数组实现包43
2.1 使用固定大小的数组实现ADT包43
2.1.1 类比43
2.1.2 一组核心方法44
2.1.3 实现核心方法45
2.1.4 让实现安全51
2.1.5 测试核心方法54
2.1.6 实现更多的方法56
2.1.7 删除项的方法58
2.2 使用可变大小的数组实现ADT包65
2.2.1 可变大小数组65
2.2.2 包的新实现68
2.3 使用数组实现ADT包的优缺点70
Java插曲2 异常75
第3章 使用链式数据实现包82
3.1 链式数据82
3.2 ADT包的链式实现84
3.2.1 私有类Node84
3.2.2 类LinkedBag的框架85
3.2.3 定义一些核心方法86
3.2.4 测试核心方法89
3.2.5 方法getFrequencyOf90
3.2.6 方法contains91
3.3 从链中删除一项92
3.4 有设置和获取方法的类Node96
3.5 使用链实现ADT包的优缺点98
第4章 算法的效率102
4.1 动机102
4.2 测量算法的效率103
4.2.1 计数基本操作105
4.2.2 最优、最差和平均情形106
4.3 大O表示107
4.4 描述效率110
4.5 实现ADT包的效率113
4.5.1 基于数组的实现113
4.5.2 链式实现114
4.5.3 两种实现的比较115
第5章 栈121
5.1 ADT栈的规格说明121
5.2 使用栈来处理代数表达式125
5.2.1 问题求解:检查中缀代数表达式中平衡的分隔符125
5.2.2 问题求解:将中缀代数表达式转换为后缀表达式129
5.2.3 问题求解:计算后缀表达式的值133
5.2.4 问题求解:计算中缀表达式的值134
5.3 程序栈136
5.4 Java类库:类Stack137
第6章 栈的实现142
6.1 链式实现142
6.2 基于数组的实现144
6.3 基于向量的实现148
6.3.1 Java类库:类Vector148
6.3.2 使用向量实现ADT栈149
第7章 递归154
7.1 什么是递归154
7.2 跟踪递归方法158
7.3 返回一个值的递归方法160
7.4 递归处理数组162
7.5 递归处理链165
7.6 递归方法的时间效率166
7.6.1 countDown的时间效率166
7.6.2 计算xn的时间效率167
7.7 困难问题的简单求解方案168
7.8 简单问题的低劣求解方案172
7.9 尾递归174
7.10 间接递归176
7.11 使用栈来替代递归177
Java插曲3 再谈泛型185
第8章 排序简介194
8.1 对数组进行排序的Java方法的组织194
8.2 选择排序195
8.2.1 迭代选择排序196
8.2.2 递归选择排序198
8.2.3 选择排序的效率198
8.3 插入排序199
8.3.1 迭代插入排序199
8.3.2 递归插入排序201
8.3.3 插入排序的效率202
8.3.4 链式结点链的插入排序203
8.4 希尔排序205
8.4.1 算法206
8.4.2 希尔排序的效率207
8.5 算法比较208
第9章 更快的排序方法213
9.1 归并排序213
9.1.1 归并数组213
9.1.2 递归归并排序214
9.1.3 归并排序的效率216
9.1.4 迭代归并排序217
9.1.5 Java类库中的归并排序218
9.2 快速排序218
9.2.1 快速排序的效率219
9.2.2 创建划分219
9.2.3 实现快速排序221
9.2.4 Java类库中的快速排序223
9.3 基数排序223
9.3.1 基数排序的伪代码225
9.3.2 基数排序的效率225
9.4 算法比较226
Java插曲4 再谈异常231
第10章 队列、双端队列和优先队列238
10.1 ADT队列238
10.1.1 问题求解:模拟排队241
10.1.2 问题求解:计算出售股票的资本收益246
10.1.3 Java类库:接口Queue248
10.2 ADT双端队列249
10.2.1 问题求解:计算出售股票的资本收益251
10.2.2 Java类库:接口Deque252
10.2.3 Java类库:类ArrayDeque253
10.3 ADT优先队列254
10.3.1 问题求解:跟踪任务分配255
10.3.2 Java类库:类PriorityQueue257
第11章 队列、双端队列和优先队列的实现262
11.1 队列的链式实现262
11.2 基于数组实现队列265
11.2.1 循环数组266
11.2.2 带一个不用位置的循环数组267
11.3 队列的循环链式实现272
11.4 Java类库:类AbstractQueue277
11.5 双端队列的双向链式实现277
11.6 优先队列的可能实现方案281
第12章 线性表285
12.1 ADT线性表的规格说明285
12.2 使用ADT线性表291
12.3 Java类库:接口List294
12.4 Java类库:类ArrayList294
第13章 使用数组实现线性表299
13.1 使用数组实现ADT线性表299
13.1.1 类比299
13.1.2 Java实现301
13.1.3 使用数组实现ADT线性表的效率308
第14章 使用链式数据实现线性表313
14.1 链式结点链上的操作313
14.1.1 在不同的位置添加结点313
14.1.2 从不同的位置删除结点316
14.1.3 私有方法getNodeAt317
14.2 开始实现318
14.2.1 数据域和构造方法319
14.2.2 添加到线性表的表尾320
14.2.3 在线性表的给定位置添加321
14.2.4 方法isEmpty和toArray322
14.2.5 测试核心方法324
14.3 继续实现325
14.4 细化实现328
14.5 使用链实现ADT线性表的效率331
14.6 Java类库:类LinkedList333
Java插曲5 迭代器338
第15章 ADT线性表的迭代器351
15.1 实现迭代器的方法351
15.2 独立类迭代器351
15.3 内层类迭代器354
15.3.1 链式实现355
15.3.2 基于数组的实现358
15.4 为什么迭代器方法在它自己的类中360
15.5 基于数组实现接口ListIterator362
Java插曲6 可变及不可变对象372
第16章 有序表378
16.1 ADT有序表的规格说明378
16.2 链式实现382
16.2.1 方法add383
16.2.2 链式实现的效率388
16.3 使用ADT线性表实现388
Java插曲7 继承和多态396
第17章 继承和线性表405
17.1 使用继承实现有序表405
17.2 设计一个基类407
17.3 有序表的高效实现413
第18章 查找417
18.1 问题417
18.2 在无序数组中查找417
18.2.1 无序数组上的迭代顺序查找418
18.2.2 无序数组上的递归顺序查找418
18.2.3 顺序查找数组的效率420
18.3 有序数组上的查找420
18.3.1 有序数组上的顺序查找420
18.3.2 有序数组上的二分查找421
18.3.3 Java类库:方法binarySearch424
18.3.4 数组上的二分查找的效率425
18.4 无序链上的查找426
18.4.1 无序链上的迭代顺序查找426
18.4.2 无序链上的递归顺序查找427
18.4.3 链上查找的效率427
18.5 有序链上的查找428
18.5.1 有序链上的顺序查找428
18.5.2 有序链上的二分查找428
18.6 查找方法的选择429
Java插曲8 再论泛型434
第19章 字典436
19.1 ADT字典的规格说明436
19.1.1 Java接口439
19.1.2 迭代器440
19.2 使用ADT字典441
19.2.1 问题求解:电话号码簿441
19.2.2 问题求解:字的频度445
19.2.3 问题求解:字的词汇索引448
19.3 Java类库:接口Map451
第20章 字典的实现455
20.1 基于数组的实现455
20.1.1 基于数组的无序字典455
20.1.2 基于数组的有序字典459
20.2 链式实现463
20.2.1 无序链式字典464
20.2.2 有序链式字典464
第21章 散列简介470
21.1 什么是散列470
21.2 散列函数472
21.2.1 计算散列码473
21.2.2 将散列码压缩为散列表的下标475
21.3 解决冲突476
21.3.1 开放地址的线性探查476
21.3.2 开放地址的二次探查480
21.3.3 开放地址的双散列480
21.3.4 开放地址的潜在问题482
21.3.5 拉链法482
第22章 使用散列实现字典488
22.1 散列的效率488
22.1.1 装填因子488
22.1.2 开放地址法的代价489
22.1.3 拉链法的代价490
22.2 再散列491
22.3 冲突解决方案的比较492
22.4 字典的散列实现492
22.4.1 散列表中的项492
22.4.2 数据域和构造方法493
22.4.3 方法getValue/remove和add495
22.4.4 迭代器500
22.5 Java类库:类HashMap501
22.6 Java类库:类HashSet501
第23章 树504
23.1 树的概念504
23.1.1 层次结构504
23.1.2 树的术语505
23.2 树的遍历509
23.2.1 二叉树的遍历510
23.2.2 一般树的遍历511
23.3 树的Java接口512
23.3.1 所有树的接口512
23.3.2 二叉树的接口512
23.4 二叉树的示例514
23.4.1 表达式树514
23.4.2 决策树515
23.4.3 二叉查找树518
23.4.4 堆520
23.5 一般树的示例522
23.5.1 语法树522
23.5.2 游戏树523
第24章 树的实现530
24.1 二叉树中的结点530
24.2 ADT二叉树的实现532
24.2.1 创建基本二叉树532
24.2.2 方法privateSetTree534
24.2.3 访问方法和赋值方法536
24.2.4 计算高度和结点个数536
24.2.5 遍历537
24.3 表达式树的实现541
24.4 一般树543
24.5 使用二叉树表示一般树543
Java插曲9 克隆549
第25章 二叉查找树的实现562
25.1 开始562
25.1.1 二叉查找树的接口563
25.1.2 重复项564
25.1.3 开始定义类565
25.2 查找和获取566
25.3 遍历567
25.4 添加一项567
25.4.1 递归实现568
25.4.2 迭代实现571
25.5 删除一项572
25.5.1 删除叶子结点中的项573
25.5.2 删除仅有一个孩子的结点中的项573
25.5.3 删除有两个孩子的结点中的项574
25.5.4 删除根中的项576
25.5.5 递归实现576
25.5.6 迭代实现579
25.6 操作效率582
25.6.1 平衡的重要性583
25.6.2 结点按什么次序添加583
25.7 ADT字典的实现584
第26章 堆的实现594
26.1 再论:ADT堆594
26.2 使用数组表示堆594
26.3 添加项597
26.4 删除根599
26.5 创建堆602
26.6 堆排序603
第27章 平衡查找树611
27.1 AVL树611
27.1.1 单旋转612
27.1.2 双旋转614
27.1.3 实现细节617
27.2 2-3树620
27.2.1 在2-3树中进行查找621
27.2.2 向2-3树中添加项621
27.2.3 添加过程中分裂结点623
27.3 2-4树624
27.3.1 向2-4树中添加项624
27.3.2 AVL树、2-3树和2-4树的比较626
27.4 红黑树626
27.4.1 红黑树的特性627
27.4.2 向红黑树中添加项628
27.4.3 Java类库:类TreeMap632
27.5 B树632
第28章 图639
28.1 一些示例及术语639
28.1.1 公路图639
28.1.2 航空公司的航线641
28.1.3 迷宫642
28.1.4 先修课程642
28.1.5 树642
28.2 遍历643
28.2.1 广度优先遍历643
28.2.2 深度优先遍历644
28.3 拓扑序646
28.4 路径648
28.4.1 寻找路径648
28.4.2 无权图中的最短路径648
28.4.3 带权图中的最短路径651
28.5 ADT图的Java接口654
第29章 图的实现662
29.1 两个实现概述662
29.1.1 邻接矩阵662
29.1.2 邻接表663
29.2 顶点和边663
29.2.1 说明类Vertex664
29.2.2 内部类Edge666
29.2.3 类Vertex的实现666
29.3 ADT图的实现669
29.3.1 基本操作669
29.3.2 图算法672
附录A 文档和程序设计风格678
附录B Java基础(在线)682
附录C Java类(在线)684
附录D 从其他类创建类685
附录E 文件输入和输出(在线)701
索引702
热门推荐
- 1604156.html
- 925770.html
- 1558042.html
- 12540.html
- 1063955.html
- 2509975.html
- 3888243.html
- 2397714.html
- 1409273.html
- 2025785.html
- http://www.ickdjs.cc/book_2869886.html
- http://www.ickdjs.cc/book_2123633.html
- http://www.ickdjs.cc/book_1332270.html
- http://www.ickdjs.cc/book_2923487.html
- http://www.ickdjs.cc/book_3396462.html
- http://www.ickdjs.cc/book_3344741.html
- http://www.ickdjs.cc/book_1476070.html
- http://www.ickdjs.cc/book_3468348.html
- http://www.ickdjs.cc/book_865397.html
- http://www.ickdjs.cc/book_2708875.html