图书介绍
数据结构与算法分析 JAVA语言描述 第2版【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

- FRANK M.CARRANO著;金名等译 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302162698
- 出版时间:2007
- 标注页数:874页
- 文件大小:152MB
- 文件页数:893页
- 主题词:数据结构-教材;算法分析-教材;JAVA语言-程序设计-教材
PDF下载
下载说明
数据结构与算法分析 JAVA语言描述 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第0章 引言1
第1章 Java类2
1.1 对象与类2
1.2 在Java类中使用方法5
1.3 定义Java类7
1.3.1 方法定义8
1.3.2 实参与形参10
1.3.3 传递实参11
1.3.4 Name类的定义14
1.3.5 构造函数16
1.3.6 toString方法18
1.3.7 调用其他方法的方法18
1.3.8 返回所属类实例的方法20
1.3.9 静态域与静态方法20
1.3.10 方法的重载22
1.4 枚举类23
1.5 包26
本章小结27
练习28
项目设计31
第2章 从已有类创建新类35
2.1 合成35
2.1.1 通用类型38
2.1.2 适配器41
2.2 继承42
2.2.1 从构造函数中调用构造函数45
2.2.2 基类的私有域与私有方法46
2.2.3 受保护的访问47
2.2.4 方法的覆盖与重载47
2.2.5 多重继承52
2.3 类型兼容性与基类53
2.3.1 Object类54
2.3.2 抽象类与抽象方法56
2.4 多态性58
本章小结63
练习64
项目设计68
第3章 类的设计70
3.1 封装70
3.2 方法的说明72
3.3 接口76
3.3.1 编写接口76
3.3.2 实现接口78
3.3.3 作为数据类型的接口79
3.3.4 接口的通用类型80
3.3.5 Comparable接口80
3.3.6 扩展接口82
3.3.7 接口与抽象类83
3.3.8 符号常量85
3.4 类的选择86
3.4.1 类的确定87
3.4.2 CRC卡片88
3.5 类的复用91
本章小结91
练习92
项目设计93
第4章 线性表96
4.1 ADT线性表说明96
4.2 使用ADT线性表103
4.3 像使用自动售货机一样使用线性表107
4.4 Java类库:List接口109
本章小结109
练习110
项目设计112
第5章 用数组实现线性表114
5.1 使用定长数组实现ADT线性表114
5.1.1 类比114
5.1.2 Java实现116
5.2 使用动态扩展数组实现ADT线性表124
5.2.1 扩展数组125
5.2.2 线性表的新实现127
5.3 Java类库:ArrayList与Vector类128
5.4 用数组实现ADT线性表的优缺点132
本章小结133
练习134
项目设计135
第6章 用链表实现线性表136
6.1 链表136
6.1.1 在表头添加来创建链表137
6.1.2 在表末添加来创建链表138
6.1.3 在不同位置添加来创建链表140
6.2 使用链表实现ADT线性表142
6.2.1 私有类Node142
6.2.2 数据域与构造函数144
6.2.3 选择要实现的核心方法组145
6.2.4 在线性表的末端插入元素146
6.2.5 在线性表的指定位置插入元素148
6.2.6 私有方法getNodeAt152
6.2.7 断言与isEmpty方法153
6.2.8 display方法154
6.3 测试不完整的实现155
本章小结157
练习158
项目设计159
第7章 完成线性表的链表实现160
7.1 从链表中删除一个元素160
7.2 完成ADT线性表的链表实现162
7.2.1 方法remove162
7.2.2 方法replace165
7.2.3 方法getEntry165
7.2.4 方法contains166
7.2.5 其他方法166
7.3 使用具有设置与获取方法的Node类167
7.4 表尾引用170
7.5 用链表实现ADT线性表的优缺点175
7.6 Java类库:LinkedList类175
本章小结176
练习176
项目设计177
第8章 迭代器179
8.1 什么是迭代器179
8.2 Iterator接口180
8.3 独立类迭代器186
8.4 内部类迭代器189
8.4.1 基于链表实现190
8.4.2 基于数组实现194
8.5 迭代器方法为何在自己的类中197
8.6 ListIterator接口198
8.7 基于数组实现ListIterator接口204
8.8 Java类库:Iterable接口211
8.8.1 Iterable与for-each循环212
8.8.2 重温List接口212
本章小结213
练习213
项目设计216
第9章 算法的效率218
9.1 动机218
9.2 度量算法的效率220
9.3 形式化226
9.4 效率的图形表示229
9.5 ADT线性表不同实现的效率232
9.5.1 基于数组实现232
9.5.2 基于链表实现234
9.5.3 比较上述实现237
本章小结238
练习238
项目设计240
第10章 递归243
10.1 何谓递归243
10.2 跟踪递归方法248
10.3 有返回值的递归方法250
10.4 递归处理数组253
10.5 递归处理链表255
10.6 递归方法的时间效率257
10.6.1 countDown的时间效率257
10.6.2 计算xn的时间效率258
10.7 困难问题的简单解法259
10.8 简单问题的拙劣解法264
10.9 尾递归266
10.10 协同递归268
本章小结268
练习270
项目设计271
第11章 排序入门275
11.1 组织用于数组排序的Java方法276
11.2 选择排序277
11.2.1 迭代选择排序278
11.2.2 递归选择排序280
11.2.3 选择排序的效率281
11.3 插入排序282
11.3.1 迭代插入排序283
11.3.2 递归插入排序284
11.3.3 插入排序的效率286
11.3.4 链表的插入排序286
11.4 希尔排序289
11.4.1 Java代码291
11.4.2 希尔排序的效率292
11.5 算法比较293
本章小结293
练习293
项目设计296
第12章 快速排序算法298
12.1 归并排序298
12.1.1 数组的归并298
12.1.2 递归归并排序299
12.1.3 归并排序的效率302
12.1.4 迭代归并排序303
12.1.5 Java类库中的归并排序304
12.2 快速排序304
12.2.1 快速排序的效率305
12.2.2 创建划分305
12.2.3 快速排序的Java代码308
12.2.4 Java类库中的快速排序311
12.3 基数排序311
12.3.1 基数排序的伪代码313
12.3.2 基数排序的效率313
12.4 算法比较314
本章小结314
练习315
项目设计316
第13章 有序表319
13.1 ADT有序表的说明319
13.2 链表实现323
13.2.1 add方法324
13.2.2 链表实现的效率331
13.3 使用ADT线性表的实现331
本章小结336
练习336
项目设计337
第14章 继承与线性表339
14.1 使用继承实现有序表339
14.2 设计一个基类342
14.3 有序表的一种高效实现348
本章小结349
练习350
项目设计350
第15章 可变对象、不可变对象与可克隆对象352
15.1 可变对象与不可变对象352
15.1.1 创建只读类355
15.1.2 同伴类356
15.2 可克隆对象358
15.2.1 克隆数组364
15.2.2 克隆链表366
15.2.3 克隆体的有序表370
本章小结373
练习373
项目设计376
第16章 查找377
16.1 问题描述377
16.2 查找无序数组378
16.2.1 迭代顺序查找无序数组378
16.2.2 递归顺序查找无序数组379
16.2.3 顺序查找数组的效率381
16.3 查找有序数组381
16.3.1 顺序查找有序数组381
16.3.2 折半查找有序数组382
16.3.3 Java类库:binarySearch方法386
16.3.4 折半查找数组的效率387
16.4 查找无序链表388
16.4.1 迭代顺序查找无序链表388
16.4.2 递归顺序查找无序链表389
16.4.3 顺序查找链表的效率390
16.5 查找有序链表390
16.5.1 顺序查找有序链表390
16.5.2 折半查找有序链表391
16.6 查找方法的选择391
本章小结392
练习392
项目设计394
第17章 词典396
17.1 ADT词典的说明396
17.1.1 Java接口399
17.1.2 迭代器400
17.2 使用ADT词典402
17.2.1 电话号码簿402
17.2.2 词频407
17.2.3 词的索引411
17.3 Java类库:Map接口414
本章小结415
练习415
项目设计416
第18章 词典的实现418
18.1 基于数组的实现418
18.1.1 基于数组的无序词典419
18.1.2 基于数组的有序词典424
18.2 基于向量的实现428
18.3 基于链表的实现433
18.3.1 基于链表的无序词典434
18.3.2 基于链表的有序词典434
本章小结438
练习438
项目设计439
第19章 散列概述440
19.1 什么是散列440
19.2 散列函数442
19.2.1 计算散列码443
19.2.2 将散列码压缩为散列表的索引445
19.3 处理冲突446
19.3.1 线性探测开放定址446
19.3.2 二次探测开放定址451
19.3.3 双散列开放定址451
19.3.4 开放定址的潜在问题453
19.3.5 链地址453
本章小结456
练习457
项目设计458
第20章 用散列实现词典459
20.1 效率459
20.1.1 装填因子460
20.1.2 开放定址的开销460
20.1.3 链地址的开销462
20.2 再散列463
20.3 处理冲突的各方案比较464
20.4 使用散列的词典实现465
20.4.1 散列表中的元素465
20.4.2 数据域与构造函数466
20.4.3 方法getValue、remove和add467
20.4.4 迭代器473
20.5 Java类库:类HashMap475
本章小结475
练习476
项目设计476
第21章 栈478
21.1 ADT栈的说明478
21.2 利用栈处理代数表达式481
21.2.1 检查中缀代数表达式的括号是否平衡482
21.2.2 将中缀表达式转化为后缀表达式487
21.2.3 后缀表达式求值493
21.2.4 中缀表达式求值495
21.3 程序栈497
21.4 使用栈代替递归498
21.5 Java类库:类Stack501
本章小结502
练习502
项目设计504
第22章 栈的实现506
22.1 基于链表的实现506
22.2 基于数组的实现509
22.3 基于向量的实现513
本章小结515
练习515
项目设计516
第23章 队列、双端队列与优先队列517
23.1 ADT队列的描述517
23.2 使用队列模拟排队521
23.3 使用队列计算股份销售的资本收益527
23.4 Java类库:Queue接口530
23.5 ADT双端队列的描述530
23.6 使用双端队列计算股份销售的资本收益532
23.7 ADT优先队列的描述534
23.8 使用优先队列跟踪委派任务535
本章小结537
练习537
项目设计539
第24章 队列、双端队列与优先队列的实现541
24.1 基于链表的队列实现541
24.2 基于数组的队列实现545
24.2.1 循环数组546
24.2.2 含有一个未用位置的循环数组547
24.3 基于向量的队列实现552
24.4 基于循环链表的队列实现554
24.5 Java类库:AbstractQueue类560
24.6 基于双向链表的双端队列实现560
24.7 实现优先队列的可用方法564
24.8 Java类库:PriorityQueue类564
本章小结565
练习566
项目设计567
第25章 树569
25.1 树的概念569
25.1.1 层次化的组织569
25.1.2 树的术语571
25.2 树的遍历574
25.2.1 二叉树的遍历575
25.2.2 树的遍历576
25.3 树的Java接口577
25.3.1 所有树的接口577
25.3.2 二叉树的接口578
25.4 二叉树举例579
25.4.1 表达式树580
25.4.2 决策树581
25.4.3 二叉查找树585
25.4.4 堆587
25.5 树举例589
25.5.1 语法分析树589
25.5.2 博弈树590
本章小结590
练习591
项目设计593
第26章 树的实现595
26.1 二叉树的结点595
26.1.1 结点的接口596
26.1.2 BinaryNode的实现597
26.2 ADT二叉树的实现599
26.2.1 创建基本二叉树599
26.2.2 方法privateSetTree600
26.2.3 访问者与修改者方法603
26.2.4 计算高度与统计结点604
26.2.5 遍历605
26.3 表达式二叉树的实现610
26.4 树612
26.4.1 树的结点612
26.4.2 用二叉树表示树613
本章小结614
练习614
项目设计616
第27章 二叉查找树的实现617
27.1 预备知识617
27.1.1 二叉查找树接口618
27.1.2 重复元素620
27.1.3 开始类定义621
27.2 查找与检索622
27.3 遍历624
27.4 插入元素624
27.4.1 递归实现625
27.4.2 迭代实现628
27.5 删除元素631
27.5.1 删除叶子结点中的元素631
27.5.2 删除有一个孩子的结点中的元素631
27.5.3 删除有两个孩子的结点中的元素631
27.5.4 删除根结点中的元素635
27.5.5 递归实现635
27.5.6 迭代实现639
27.6 操作的效率643
27.6.1 平衡的重要性644
27.6.2 插入结点的顺序644
27.7 ADT词典的实现645
本章小结648
练习649
项目设计651
第28章 堆的实现653
28.1 再论ADT堆653
28.2 用数组表示堆654
28.3 插入元素656
28.4 删除根659
28.5 创建堆662
28.6 堆排序664
本章小结667
练习668
项目设计669
第29章 平衡查找树670
29.1 AVL树670
29.1.1 单旋转671
29.1.2 双旋转673
29.1.3 实现细节676
29.2 2-3树681
29.2.1 2-3树的查找681
29.2.2 往2-3树插入元素682
29.2.3 插入期间分裂结点683
29.3 2-4树685
29.3.1 往2-4树插入元素685
29.3.2 比较AVL树、2-3树和2-4树686
29.4 红黑树687
29.4.1 红黑树的特性688
29.4.2 往红黑树插入元素689
29.4.3 Java类库:类TreeMap693
29.5 B树693
本章小结694
练习695
项目设计696
第30章 图697
30.1 一些例子与术语697
30.1.1 公路地图697
30.1.2 航线700
30.1.3 迷宫700
30.1.4 先修课程701
30.1.5 树701
30.2 遍历701
30.2.1 广度优先遍历702
30.2.2 深度优先遍历704
30.3 拓扑顺序705
30.4 路径707
30.4.1 寻找路径708
30.4.2 无权图的最短路径708
30.4.3 加权图的最短路径710
30.5 ADT图的Java接口714
本章小结717
练习718
项目设计720
第31章 图的实现722
31.1 两种实现的概述722
31.1.1 邻接矩阵722
31.1.2 邻接表723
31.2 顶点与边724
31.2.1 说明类Vertex724
31.2.2 内部类Edge726
31.2.3 实现Vertex类727
31.3 ADT图的实现731
31.3.1 基本操作731
31.3.2 图的算法735
本章小结737
练习738
项目设计739
附录A Java基础741
A.1 引言741
A.1.1 应用程序和小程序741
A.1.2 对象和类741
A.1.3 第一个Java应用程序741
A.2 Java基础744
A.2.1 标识符744
A.2.2 保留字744
A.2.3 变量745
A.2.4 基本类型745
A.2.5 常量746
A.2.6 赋值语句746
A.2.7 赋值兼容性747
A.2.8 类型转换748
A.2.9 算术运算符和表达式749
A.2.10 括号和优先规则750
A.2.11 自增和自减运算符751
A.2.12 特殊赋值运算符752
A.2.13 符号常量752
A.2.14 Math类753
A.3 用键盘和屏幕进行简单的输入和输出754
A.3.1 屏幕输出754
A.3.2 用Scanner类进行键盘输入755
A.4 if-else语句757
A.4.1 布尔表达式758
A.4.2 嵌套语句761
A.4.3 多重if-else语句763
A.4.4 条件运算符(可选)764
A.5 switch语句764
A.6 枚举766
A.7 作用域768
A.8 循环769
A.8.1 while语句769
A.8.2 for语句770
A.8.3 do-while语句772
A.8.4 关于循环的其他信息773
A.9 String类774
A.9.1 字符串中的字符775
A.9.2 字符串的联接776
A.9.3 String方法777
A.10 StringBuilder类779
A.11 使用Scanner抽取字符串的一部分780
A.12 数组783
A.12.1 数组形参和返回值785
A.12.2 初始化数组786
A.12.3 数组索引出界786
A.12.4 对数组使用=与==786
A.12.5 数组与for-each循环788
A.12.6 多维数组788
A.12 封装类790
附录B 异常处理796
B.1 基本的异常处理796
B.2 Java类库的异常类799
B.3 定义自己的异常类800
B.4 复合catch代码块802
B.5 finally代码块803
B.6 抛出但不捕获异常的方法804
B.7 不需要捕获的异常805
附录C 文件输入与输出807
C.1 概述807
C.1.1 数据流807
C.1.2 文件的优点807
C.1.3 文件的类型808
C.1.4 文件名809
C.1.5 包java.io809
C.2 使用PrintWriter写文本文件809
C.3 读取文本文件812
C.3.1 使用Scanner读取文本文件812
C.3.2 使用BufferedReader读取文本文件814
C.3.3 定义打开数据流的方法816
C.4 二进制文件的I/O817
C.4.1 使用DataOutputStream写二进制文件817
C.4.2 使用DataInputStream读取二进制文件821
C.5 File类823
C.6 对象串行化824
附录D 文档与程序设计风格828
D.1 命名变量与类828
D.2 缩排828
D.3 注释829
D.3.1 单行注释829
D.3.2 注释块830
D.3.3 何时写注释830
D.3.4 Java文档注释830
D.3.5 运行javadoc832
附录E 自测题答案833
热门推荐
- 3102652.html
- 2414677.html
- 3860498.html
- 2936916.html
- 1589111.html
- 1331718.html
- 3123007.html
- 2101330.html
- 3396263.html
- 3241071.html
- http://www.ickdjs.cc/book_3299192.html
- http://www.ickdjs.cc/book_3720638.html
- http://www.ickdjs.cc/book_1097719.html
- http://www.ickdjs.cc/book_3024487.html
- http://www.ickdjs.cc/book_2033012.html
- http://www.ickdjs.cc/book_53157.html
- http://www.ickdjs.cc/book_3344894.html
- http://www.ickdjs.cc/book_1455289.html
- http://www.ickdjs.cc/book_408111.html
- http://www.ickdjs.cc/book_3435383.html