新闻资讯
看你所看,想你所想

数据结构与问题求解(Java语言版)(第4版)

《数据结构与问题求解(Java语来自言版)(第4版)》是2011年出版的图书,作者是Mark Allen Weiss

  • 中文名 数据结构与问题求解(Java语言版)(第4版)
  • 作者 Mark Allen Weiss
  • 装帧 平装
  • ISBN 9787302252962

图书信息

  作者:Mark Allen Weiss著,葛秀慧等译ISBN:9787302252962

  印次:1-1

  装帧:平装

  印刷日期:2011-7-11

图书简介

  数据结构与算法是程序设计的重要理论基础,也是计算机科学课程中的核心课程。本来自书是专为计算机科学专业的两个学期课程而设计,先介360百科绍数据结构,然后对高级数据结构和算法进拉温液紧孙免行分析。本书采用了独特的方法,清晰地将每种数据结构的接口与其实现分离吃么异联条开来,即将如何使用数据结构与如何对数据结构编程相分离,并充分利用了已有的数据结构库:Java集合类API。这就使学生更容易理解面向对象的编程思想,使学生先从用户的角度进行需求分析,然后再以设计者的角度进行编程设计。

  本书从抽象思维和解赵望末抗停且决问题的观点出发,采用流行的Java编程语言,根据实践需要,对数据结构进行介绍。数据结构课程的重点最终会从实现转向使用,学生可以尽早地使用已有的软件组件来设计大型项目。

  数据结构课程的内容随着时间的推移已经发生了演变,但所涵盖的相关主题达成了普遍的共识,那就是软件开发的原则,其中最突出的是封装和信息隐藏的概念。在算法上,所有的数据结构课程往往都趋向于包括对运行时间分析、递归、基本排序算法和基本数据结构的介绍。本书共分五个部分:第一部分描述了整本书迫造比术州空所使用的Java基础说示创岩笑投规知识;第二部分集中介绍基本的算法和构件块;第三部分提供了一些实例研究;第四部分介绍杆弱数据结构的实现;第五部分是高级数据结构。另外,作为一部经典教材,本书内容严谨、全面、结构组织合尽待力端看点雨量理,讲授这门课的教师可以根据本校学生的需求来摘取顶解是随任留守技不同内容构成自己的讲义。

  另外值得强调推比孔劳矛级这的是这本书的适用性,它为专业人员提供了大量的、翔实的、来自真实世界的代码,也为初学者提工源蒸厚座例酒个供了从浅入深、循序渐进学习数据结构与算法的丰富实例。本书既可以用于普通数据结构的学习,也可以作为高级数据结构的教材。同时,这本书每章末都有印证所学内容的大量、有趣的练习置训,以及要求学生自己动手来建立自己的应用程序。

目录

  第1部分 Java教程

  第1来自章 Java基础知360百科识 3

  1.1 通用环境 3

  1.2 第一个程序 4

  1.2.1 注释 4

  1.2.2 main 5

  1.2.3 终端输出 5

  1.3 基本类型 5

  1.3.1 概述 5

  1.3量审故鱼乎力元.2 常量 6

  1.3.3 基本类型的声明与

  初始化 6

  1.3.4 终端输入与输出 7

  1.4 基本运算符 7

  1.4.1 赋值运算符 7

  1.4.2 二元算术运算符 8

  1.4.3 一元运算符 8

  1.4.4 类型转换 9

  1.5 条件语句 9

  1.5.1 轴坐调美并文杨连每存叫关系和相等运算符 10

  1.5.2 逻辑运算符 汉高数德克工维右语10

  1.5.3 if语句 11

  1.5.4 while语句 12

  1.5.5 for语句 13

  1.5.6 do语句 13

  1.5.7 break和c推怎啊声治地ontinue 14

  1.5.8 swi顾助发买流粮乡tch语句 15

  1急重粮答右.5.9 条件运算符 15

  1.6 方法 16

  1.6.1 方法名重载 17

  1.6.2 存储类 18

  本章小结 18

  重要概念 18

  常见错误 20

  网上资源 20

  练习 20

  简答题 20

  但展味电讨取创非序叫问理论题 21

  实践题 21

  程序设计题 22

  参考文献 22

  第2章 引用类型 23

  2.1 什么是引用 23

  2.2 对象和引用基础 24

  2.2.1 点(.)运算符 25

  2.2.2 对象的声明 25

  2.2.3 垃圾回收 26

  2.2.4 =的含义 26

  2.2.5 参数传递 27

  2.2.6 = =的含义 的改军刻28

  2.2.7 对象的无运算符重载 29

  2.3 字符串 29

  2.3.1 字边全符串处理基础 29

  2.3.般一器2 字符串连接 30

  2.3.3 字符串比较 30

  2.3.4 其他String方法 30

  2.3.5 将其他类序呼刻九坐减还啊似移型转换成

  字符串 31

  2.4 数组 3散采兰贵害述听1

  2.4.1 声明、赋值与方法 32

  2.4.2 动态数组扩展 34

  2.4.3 ArrayList 36

  2略优父农.4.4 多维数组 37

  升通越体袁视胡主岩龙别2.4.5 命令行参数 38

诗保年投蛋它照煤获全  2.4.6 增强的for循环 39

  2.5 异常处理 40

  2.5.1 概述 40

  2.5.2 finally子句 41

  2.5.3 常见的异常 41

  2.5.4 throw和throws

  子句 42

  2.6 输入与输出 43

  2.6.1 基本流操作 43

  2.6.2 Scanner类型 44

  2.6.3 顺序文件 46

  本章小结 49

  重要概念 49

  常见错误 50

  网上资源 51

  练习 51

  简答题 51

  理论题 51

  实践题 52

  程序设计题 54

  参考文献 56

  第3章 对象与类 57

  3.1 什么是面向对象编程 57

  3.2 简单示例 58

  3.3 javadoc 60

  3.4 基本方法 62

  3.4.1 构造函数 62

  3.4.2 存取器和访问器 62

  3.4.3 输出与toString 63

  3.4.4 equals 64

  3.4.5 main 64

  3.5 示例:使用java.math.

  BigInteger 64

  3.6 其他构造 66

  3.6.1 this引用 66

  3.6.2 用于构造函数的this

  缩写 67

  3.6.3 instanceof运算符 67

  3.6.4 实例成员与静态成员 68

  3.6.5 静态字段与方法 68

  3.6.6 静态初始化块 70

  3.7 示例:实现BigRational类 71

  3.8 包 74

  3.8.1 import指令 75

  3.8.2 package语句 76

  3.8.3 CLASSPATH环境

  变量 77

  3.8.4 包可见性规则 77

  3.9 设计模式:组合(对) 78

  本章小结 79

  重要概念 80

  常见错误 81

  网上资源 82

  练习 82

  简答题 82

  理论题 83

  实践题 83

  程序设计题 85

  参考文献 87

  第4章 继承 88

  4.1 什么是继承 88

  4.1.1 创建新类 89

  4.1.2 类型兼容性 92

  4.1.3 动态分配和多态性 93

  4.1.4 继承层次结构 94

  4.1.5 可见性规则 95

  4.1.6 构造函数与super 95

  4.1.7 final方法和类 96

  4.1.8 重写方法 97

  4.1.9 类型兼容性修正 99

  4.1.10 数组类型的

  兼容性 100

  4.1.11 协变返回类型 100

  4.2 设计层次结构 101

  4.2.1 抽象方法与抽象类 103

  4.2.2 未来的设计 105

  4.3 多重继承 106

  4.4 接口 108

  4.4.1 指定接口 108

  4.4.2 实现接口 108

  4.4.3 多接口 109

  4.4.4 接口是抽象类 109

  4.5 Java的基本继承 110

  4.5.1 Object类 110

  4.5.2 异常的层次结构 110

  4.5.3 I/O:装饰模式 110

  4.6 使用继承实现泛型组件 114

  4.6.1 使用Object的泛型 114

  4.6.2 基本类型的包装 115

  4.6.3 自动装包/拆包 117

  4.6.4 适配器:改变接口 117

  4.6.5 泛型所使用的接口

  类型 118

  4.7 使用Java 5泛型实现

  泛型组件 120

  4.7.1 简单的泛型类和

  接口 121

  4.7.2 通配符的绑定 121

  4.7.3 泛型的静态方法 123

  4.7.4 类型绑定 123

  4.7.5 类型擦除 124

  4.7.6 泛型的限制 125

  4.8 函子(函数对象) 127

  4.8.1 嵌套类 130

  4.8.2 局部类 130

  4.8.3 匿名类 132

  4.8.4 嵌套类和泛型 132

  4.9 动态分配细节 133

  本章小结 135

  重要概念 136

  常见错误 138

  网上资源 138

  习题 139

  简答题 139

  理论题 140

  实践题 142

  程序设计题 144

  参考文献 146

  第2部分 算法与构件块

  第5章 算法分析 149

  5.1 什么是算法分析 149

  5.2 算法运行时间的示例 152

  5.3 最大连续子序列和的

  问题 153

  5.3.1 简单O(N3)算法 154

  5.3.2 改进的O(N2)算法 156

  5.3.3 线性算法 157

  5.4 一般的大O规则 159

  5.5 对数 162

  5.6 静态查找问题 164

  5.6.1 顺序查找 164

  5.6.2 二分查找 164

  5.6.3 插值查找 167

  5.7 检查算法分析 168

  5.8 大O分析的局限性 169

  本章小结 169

  重要概念 170

  常见错误 170

  网上资源 171

  练习 171

  简答题 171

  理论题 172

  实践题 176

  程序设计题 178

  参考文献 179

  第6章 集合类API 181

  6.1 概述 181

  6.2 迭代器模式 182

  6.2.1 基本的迭代器

  设计 183

  6.2.2 基于继承的迭代器和

  工厂方法 185

  6.3 集合类API:容器和

  迭代器 186

  6.3.1 Collection接口 187

  6.3.2 Iterator接口 189

  6.4 泛型算法 191

  6.4.1 Comparator函数

  对象 192

  6.4.2 Collections类 192

  6.4.3 二分查找 194

  6.4.4 排序 194

  6.5 List接口 196

  6.5.1 ListIterator接口 196

  6.5.2 LinkedList类 197

  6.5.3 Lists的运行时间 200

  6.5.4 从List中间删除和

  插入 202

  6.6 栈与队列 204

  6.6.1 栈 204

  6.6.2 栈与计算语言 205

  6.6.3 队列 206

  6.6.4 在集合类API中的

  栈与队列 207

  6.7 集合 207

  6.7.1 TreeSet类 208

  6.7.2 HashSet类 209

  6.8 映射 213

  6.9 优先级队列 217

  6.10 集合类API中的视图 219

  6.10.1 List的subList

  方法 219

  6.10.2 SortedSet的headSet、

  subSet和tailSet

  方法 220

  本章小结 220

  重要概念 221

  常见错误 222

  网上资源 222

  练习 223

  简答题 223

  理论题 223

  实践题 224

  程序设计题 229

  参考文献 231

  第7章 递归 232

  7.1 什么是递归 232

  7.2 背景知识:数学归

  纳法证明 233

  7.3 基本递归 235

  7.3.1 以任意基数打印数 236

  7.3.2 运行的原因 238

  7.3.3 如何运行 239

  7.3.4 太多的递归是

  危险的 240

  7.3.5 树的预备知识 241

  7.3.6 其他的例子 242

  7.4 数值应用 245

  7.4.1 模运算 246

  7.4.2 模的幂运算 246

  7.4.3 最大公约数和乘法

  逆元素 247

  7.4.4 RSA密码系统 250

  7.5 分治算法 252

  7.5.1 最大连续子序列和的

  问题 252

  7.5.2 基本分治循环的

  分析 254

  7.5.3 分治运行时间的

  一般上界 257

  7.6 动态规划 259

  7.7 回溯 262

  本章小结 265

  重要概念 265

  常见错误 266

  网上资源 266

  练习 267

  简答题 267

  理论题 267

  实践题 269

  程序设计题 270

  参考文献 273

  第8章 排序算法 274

  8.1 排序为什么重要 274

  8.2 预备知识 275

  8.3 插入排序和其他简单排序的

  分析 275

  8.4 希尔排序 278

  8.4.1 希尔排序的性能 279

  8.5 归并排序 281

  8.5.1 以线性时间归并

  有序数组 281

  8.5.2 归并排序算法 283

  8.6 快速排序 284

  8.6.1 概述 285

  8.6.2 快速排序分析 287

  8.6.3 选择支点 290

  8.6.4 分割策略 291

  8.6.5 键等于支点 292

  8.6.6 三个元素的中值

  分割 293

  8.6.7 小数组 294

  8.6.8 Java的快速

  排序例程 294

  8.7 快速选择 296

  8.8 排序的下限 297

  本章小结 298

  重要概念 299

  常见错误 299

  网上资源 299

  练习 300

  简答题 300

  理论题 300

  实践题 301

  程序设计题 302

  参考文献 304

  第9章 随机化 305

  9.1 为什么需要随机数 305

  9.2 随机数发生器 306

  9.3 非均匀随机数 312

  9.4 生成随机排列 313

  9.5 随机算法 314

  9.6 随机素性测试 316

  本章小结 319

  重要概念 319

  常见错误 320

  网上资源 320

  练习 321

  简答题 321

  理论题 321

  实践题 321

  程序设计题 321

  参考文献 322

  第3部分 应 用

  第10章 娱乐与游戏 327

  10.1 纵横找单词 327

  10.1.1 理论 327

  10.1.2 Java实现 329

  10.2 井字游戏 334

  10.2.1 ??? 剪枝 334

  10.2.2 置换表 336

  10.2.3 计算机下棋 339

  本章小结 340

  重要概念 340

  常见错误 341

  网上资源 341

  练习 341

  简答题 341

  理论题 342

  实践题 342

  程序设计题 342

  参考文献 343

  第11章 栈与编译器 344

  11.1 平衡符号检查器 344

  11.1.1 基本算法 344

  11.1.2 实现 345

  11.2 简单的计算器 353

  11.2.1 后缀机 354

  11.2.2 中缀到后缀的

  转换 354

  10.2.3 实现 357

  10.2.4 表达式树 363

  本章小结 364

  重要概念 364

  常见错误 365

  网上资源 365

  练习 365

  简答题 365

  理论题 366

  实践题 366

  程序设计题 366

  参考文献 367

  第12章 实用程序 368

  12.1 文件压缩 368

  12.1.1 前缀码 369

  12.1.2 霍夫曼算法 370

  12.1.3 实现 372

  12.2 交叉引用生成器 384

  12.2.1 基本思想 384

  12.2.2 Java实现 384

  本章小结 387

  重要概念 388

  常见错误 388

  网上资源 388

  练习 388

  简答题 388

  理论题 389

  实践题 389

  程序设计题 390

  参考文献 392

  第13章 模拟 393

  13.1 约瑟夫问题 393

  13.1.1 简单的解决方案 394

  13.1.2 更高效的算法 395

  13.2 事件驱动模拟 397

  13.2.1 基本思想 397

  13.2.2 示例:电话银行

  模拟 398

  本章小结 404

  重要概念 405

  常见错误 405

  网上资源 405

  练习 405

  简答题 405

  理论题 405

  实践题 406

  程序设计题 406

  第14章 图与路径 407

  14.1 图的定义 407

  14.1.1 图的表示 409

  14.2 无权最短路径问题 417

  14.2.1 理论 418

  14.2.2 Java实现 420

  14.3 非负权值的最短路径

  问题 421

  14.3.1 理论:dijkstra

  算法 421

  14.3.2 Java实现 424

  14.4 负权值的最短路径问题 425

  14.4.1 理论 426

  14.4.2 Java实现 426

  14.5 在无环图中的路径

  问题 427

  14.5.1 拓扑排序 428

  14.5.2 无环图最短路径

  算法的理论 429

  14.5.3 Java实现 430

  14.5.4 应用:关键路径

  分析 432

  本章小结 434

  重要概念 434

  常见错误 435

  网上资源 435

  练习 435

  简答题 435

  理论题 436

  实践题 437

  程序设计题 437

  参考文献 438

  第4部分 实 现

  第15章 内部类和ArrayList的

  实现 443

  15.1 迭代器和嵌套类 443

  15.2 迭代器和内部类 445

  15.3 AbstractCollection类 447

  15.4 StringBuilder 450

  15.5 使用迭代器的ArrayList的

  实现 451

  本章小结 456

  重要概念 456

  常见错误 456

  网上资源 456

  练习 456

  简答题 456

  理论题 457

  实践题 457

  程序设计题 457

  第16章 栈与队列 459

  16.1 动态数组实现 459

  16.1.1 栈 459

  16.1.2 队列 462

  16.2 链表实现 467

  16.2.1 栈 467

  16.2.2 队列 469

  16.3 两种方法的比较 473

  16.4 java.util.Stack类 473

  16.5 双端队列 474

  本章小结 475

  重要概念 475

  常见错误 475

  网上资源 475

  练习 475

  简答题 475

  实践题 476

  程序设计题 476

  第17章 链表 477

  17.1 基本思想 477

  17.1.1 头结点 478

  17.1.2 迭代器类 479

  17.2 Java实现 480

  17.3 双链表和循环链表 485

  17.4 有序链表 487

  17.5 集合类AIP LinkedList类的

  实现 488

  本章小结 498

  重要概念 498

  常见错误 498

  网上资源 498

  练习 499

  简答题 499

  理论题 499

  实践题 499

  程序设计题 500

  第18章 树 502

  18.1 一般树 502

  18.1.1 定义 502

  18.1.2 实现 503

  18.1.3 应用:文件系统 504

  18.2 二叉树 507

  18.3 递归与树 512

  18.4 树的遍历:迭代器类 514

  18.4.1 后序遍历 516

  18.4.2 中序遍历 520

  18.4.3 前序遍历 521

  18.4.4 层序遍历 523

  本章小结 524

  重要概念 524

  常见错误 525

  网上资源 525

  练习 526

  简答题 526

  理论题 527

  实践题 527

  程序设计题 527

  第19章 二叉查找树 529

  19.1 基本思想 529

  19.1.1 操作 530

  19.1.2 Java实现 531

  19.2 顺序统计量 537

  19.2.1 Java实现 538

  19.3 二叉查找树操作的分析 541

  19.4 AVL树 543

  19.4.1 性质 544

  19.4.2 单旋转 546

  19.4.3 双旋转 548

  19.4.4 AVL插入总结 550

  19.5 红黑树 550

  19.5.1 自底而上的插入 551

  19.5.2 自顶而下的

  红黑树 553

  19.5.3 Java实现 554

  19.5.4 自顶而下的删除 560

  19.6 AA树 561

  19.6.1 插入 562

  19.6.2 删除 564

  19.6.3 Java实现 565

  19.7 集合类API中TreeSet类

  和TreeMap类的实现 569

  19.8 B树 582

  本章小结 587

  重要概念 588

  常见错误 588

  网上资源 589

  练习 589

  简答题 589

  理论题 589

  实践题 590

  程序设计题 590

  参考文献 593

  第20章 散列表 595

  20.1 基本思想 595

  20.2 散列函数 596

  20.2.1 在java.lang.String

  中的hashCode 598

  20.3 线性探测法 599

  20.3.1 线性探测法的

  简单分析 600

  20.3.2 真的发生了什么:

  初始聚类 601

  20.3.3 find操作的分析 602

  20.4 二次探测法 603

  20.4.1 Java实现 606

  20.4.2 二次探测法的

  分析 613

  20.5 分离链接散列 614

  20.6 散列表与二叉查找树的

  比较 616

  20.7 散列的应用 616

  本章小结 616

  重要概念 617

  常见错误 617

  网上资源 618

  练习 618

  简答题 618

  理论题 618

  实践题 619

  程序设计题 619

  参考文献 620

  第21章 优先级队列:二叉堆 622

  21.1 基本思想 622

  21.1.1 结构性质 623

  21.1.2 堆序性质 624

  21.1.3 允许的操作 624

  21.2 基本操作的实现 627

  21.2.1 插入 627

  21.2.2 deleteMin操作 628

  21.3 buildHeap操作:线性时间的

  堆构造 630

  21.4 高级操作:decreaseKey和

  merge 633

  21.5 内部排序:堆排序 634

  21.6 外部排序 636

  21.6.1 为什么需要新

  算法 636

  21.6.2 外部排序的模型 636

  21.6.3 简单算法 636

  21.6.4 多路归并 638

  21.6.5 多相归并 639

  21.6.6 置换选择 640

  本章小结 641

  重要概念 642

  常见错误 642

  网上资源 642

  练习 643

  简答题 643

  理论题 643

  实践题 645

  程序设计题 645

  参考文献 646

  第5部分 高级数据结构

  第22章 伸展树 649

  22.1 自调整和平摊分析 649

  22.1.1 平摊时间限定 650

  22.1.2 简单的自调整策略

  (不能运行) 650

  22.2 基本自底向上的伸展树 652

  22.3 基本伸展树的操作 653

  22.4 自底向上伸展树的分析 654

  22.4.1 伸展限定的证明 656

  22.5 自顶向下的伸展树 658

  22.6 自顶向下伸展树的实现 661

  22.7 伸展树与其他查找树的

  比较 665

  本章小结 665

  重要概念 665

  常见错误 666

  网上资源 666

  练习 666

  简答题 666

  理论题 666

  实践题 667

  程序设计题 667

  参考文献 667

  第23章 归并优先级队列 668

  23.1 斜堆 668

  23.1.1 归并是一种

  基本操作 668

  23.1.2 具有堆有序性树的

  简化归并 669

  23.1.3 斜堆:一个简单的

  修改 669

  23.1.4 斜堆的分析 670

  23.2 偶堆 672

  23.2.1 偶堆操作 672

  23.2.2 偶堆的实现 674

  23.2.3 应用:dijkstra的

  最短加树路径算法 679

  本章小结 681

  重要概念 681

  常见错误 681

  网上资源 681

  练习 682

  简答题 682

  理论题 682

  实践题 682

  程序设计题 682

  参考文献 683

  第24章 不相交集类 684

  24.1 等价关系 684

  24.2 动态等价与应用 685

  24.2.1 应用:生成迷宫 686

  24.2.2 应用:最小生成树 687

  24.2.3 应用:最近共同

  祖先问题 689

  24.3 快速查找算法 692

  24.4 快速并算法 693

  24.4.1 智能并算法 694

  24.4.2 路径压缩 696

  24.5 Java实现 697

  24.6 按秩并和路径压缩的

  最坏情况 699

  24.6.1 并/查找算法的

  分析 699

  本章小结 704

  重要概念 704

  常见错误 705

  网上资源 705

  练习 705

  简答题 705

  理论题 706

  实践题 706

  程序设计题 706

  参考文献 707

  附录A 运算符 709

  附录B 图形化用户界面 710

  B.1 抽象窗口工具包和Swing 710

  B.2 在Swing中的基本对象 711

  B.2.1 组件 712

  B.2.2 容器 713

  B.2.3 顶级容器 713

  B.2.4 JPanel 714

  B.2.5 重要的I/O组件 715

  B.3 基本原理 719

  B.3.1 布局管理器 719

  B.3.2 图 722

  B.3.3 事件 724

  B.3.4 事件处理:适配器和

  匿名内部类 726

  B.3.5 总结:将所有片段

  组合起来 728

  B.3.6 是否需要明白Swing

  的所有内容 728

  小结 728

  重要概念 729

  常见错误 730

  网上资源 731

  练习 731

  简答题 731

  实践题 731

  程序设计题 731

  参考文献 732

  附录C 位运算符 733

转载请注明出处安可林文章网 » 数据结构与问题求解(Java语言版)(第4版)

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com