当前位置:首页 > 工业技术
Java软件结构与数据结构  4版
Java软件结构与数据结构  4版

Java软件结构与数据结构 4版PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:(美)刘易斯,(美)蔡斯著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302346708
  • 页数:481 页
图书介绍:本书是著名作者John Lewis与Joseph Chase作为其一流的CSI教材“Java Software Solutions:Foundations of Program Design”的姊妹篇。尽管本书的英文名为“Java Software Structures:Designing and Using Data Structures”,但正如作者在前言中所说的那样,本书其实是一本可作为“数据结构与算法”课程的教材。
《Java软件结构与数据结构 4版》目录

第1章 概述 1

1.1软件质量 1

1.1.1正确性 2

1.1.2可靠性 2

1.1.3健壮性 3

1.1.4可用性 3

1.1.5可维护性 3

1.1.6可重用性 4

1.1.7可移植性 4

1.1.8运行效率 4

1.1.9质量问题 5

1.2数据结构 5

1.2.1一个物理示例 5

1.2.2以集装箱作为对象 7

关键概念 7

主要术语 8

自测题 8

练习题 8

自测题答案 9

第2章 算法分析 10

2.1算法效率分析 10

2.2增长函数与大O记法 11

2.3增长函数的比较 13

2.4时间复杂度分析 14

2.4.1循环运行的复杂度分析 14

2.4.2嵌套循环的复杂度分析 15

2.4.3方法调用的复杂度分析 16

关键概念 17

主要术语 17

自测题 18

练习题 18

自测题答案 18

参考文献 19

第3章 集合概述——栈 20

3.1集合 20

3.1.1抽象数据类型 21

3.1.2 Java集合API 22

3.2栈集合 23

3.3主要的面向对象概念 24

3.3.1继承与多态性 24

3.3.2泛型 25

3.4使用栈计算后缀表达式 26

3.4.1 Javadoc 32

3.5异常 33

3.6栈ADT 34

3.7用数组实现栈 36

3.7.1管理容量 37

3.8 ArrayStack类 38

3.8.1构造函数 39

3.8.2 push操作 40

3.8.3 pop操作 41

3.8.4 peek操作 42

3.8.5其他操作 42

3.8.6 EmptyCollectionException类 43

3.8.7其他实现 43

关键概念 44

主要术语 44

自测题 45

练习题 45

程序设计项目 46

自测题答案 47

第4章 链式结构——栈 48

4.1链接作为引用 48

4.2管理链表 50

4.2.1访问元素 50

4.2.2插入结点 51

4.2.3删除结点 51

4.3无链接的元素 52

4.3.1双向链表 52

4.4 Java API中的栈 53

4.5使用栈来穿越迷宫 53

4.6用链表实现栈 61

4.6.1 LinkedStack类 62

4.6.2 push操作 65

4.6.3 pop操作 65

4.6.4其他操作 66

关键概念 67

主要术语 67

自测题 67

练习题 68

程序设计项目 68

自测题答案 68

第5章 队列 70

5.1概述 70

5.2 Java API中的队列 71

5.3使用队列:代码密钥 72

5.4使用队列:售票口模拟 75

5.5队列ADT 79

5.6用链表实现队列 81

5.6.1 enqueue操作 82

5.6.2 dequeue操作 83

5.6.3其他操作 84

5.7用数组实现队列 84

5.7.1 enqueue操作 87

5.7.2 dequeue操作 89

5.7.3其他操作 89

5.8双端队列 89

关键概念 90

主要术语 90

自测题 90

练习题 90

程序设计项目 91

自测题答案 92

第6章 列表 93

6.1列表集合 93

6.2 Java集合API中的列表 95

6.3使用无序列表:学习计划 95

6.4索引列表使用示例:Josephus问题 105

6.5列表ADT 107

6.5.1往列表中添加元素 107

6.6使用数组实现列表 112

6.6.1 remove操作 113

6.6.2 contains操作 115

6.6.3有序列表的add操作 116

6.6.4无序列表的特有操作 117

6.6.5无序列表的addAfter操作 117

6.7使用链表实现列表 118

6.7.1 remove操作 119

关键概念 120

主要术语 120

自测题 121

练习题 121

程序设计项目 122

自测题答案 123

第7章 迭代器 124

7.1何谓迭代器 124

7.1.1迭代器的其他问题 126

7.2使用迭代:再论学习计划程序 126

7.2.1显示某些课程 130

7.2.2删除课程 131

7.3用数组实现迭代器 132

7.4用链表实现迭代器 135

关键概念 136

主要术语 137

自测题 137

练习题 137

自测题答案 137

第8章 递归 138

8.1递归地思考 138

8.1.1无穷递归 139

8.1.2数学中的递归 140

8.2递归地编程 140

8.2.1递归与迭代 142

8.2.2直接递归与间接递归 143

8.3使用递归 143

8.3.1穿越迷宫 143

8.3.2汉诺塔 150

8.4递归算法分析 154

关键概念 155

主要术语 156

自测题 156

练习题 156

程序设计项目 157

自测题答案 158

第9章 排序与查找 159

9.1查找 159

9.1.1静态方法 160

9.1.2泛型方法 160

9.1.3线性查找法 161

9.1.4.二分查找法 162

9.1.5查找算法的比较 164

9.2排序 165

9.2.1选择排序法 168

9.2.2插入排序法 170

9.2.3冒泡排序法 171

9.2.4快速排序法 173

9.2.5归并排序法 175

9.3基数排序法 178

关键概念 181

主要术语 182

自测题 183

练习题 183

程序设计项目 184

自测题答案 185

第10章树 186

10.1概述 186

10.1.1树的分类 187

10.2实现树的策略 188

10.2.1树的数组实现之计算策略 188

10.2.2树的数组实现之模拟链接策略 189

10.2.3树的分析 190

10.3树的遍历 190

10.3.1前序遍历 191

10.3.2中序遍历 191

10.3.3后序遍历 192

10.3.4层序遍历 193

10.4二叉树 193

10.5使用二叉树:表达式树 197

10.6背部疼痛诊断器 208

10.7用链表实现二叉树 212

10.7.1 fiind方法 216

10.7.2 iteratorInOrder方法 217

关键概念 218

主要术语 219

自测题 220

练习题 220

程序设计项目 220

自测题答案 221

第11章 二叉查找树 222

11.1概述 222

11.2用链表实现二叉查找树 224

11.2.1 addElement操作 225

11.2.2 removeElement操作 227

11.2.3 removeAllOccurrences操作 231

11.2.4 removeMin操作 232

11.3用有序列表实现二叉查找树 233

11.3.1 BinarySearchTreeList实现的分析 236

11.4平衡二叉查找树 237

11.4.1右旋 238

11.4.2左旋 238

11.4.3右左旋 238

11.4.4左右旋 239

11.5实现二叉查找树:AVL树 239

11.5.1 AVL树的右旋 240

11.5.2 AVL树的左旋 240

11.5.3 AVL树的右左旋 241

11.5.4 AVL树的左右旋 241

11.6实现二叉查找树:红黑树 242

11.6.1红黑树中的元素插入 242

11.6.2红黑树中的元素删除 244

关键概念 246

主要术语 246

自测题 247

练习题 247

程序设计项目 248

自测题答案 248

参考文献 250

第12章 优先队列与堆 251

12.1堆 251

12.1.1 addElement操作 253

12.1.2 removeMin操作 254

12.1.3 fiindMin操作 255

12.2使用堆:优先级队列 255

12.3用链表实现堆 259

12.3.1 addElement操作 260

12.3.2 removeMin操作 262

12.3.3 fiindMin操作 265

12.4用数组实现堆 265

12.4.1 addElement操作 267

12.4.2 removeMin操作 268

12.4.3 fiindMin操作 270

12.5使用堆:堆排序 270

关键概念 271

主要术语 272

自测题 272

练习题 273

程序设计项目 273

自测题答案 274

第13章 Set与Map集合 275

13.1概述 275

13.2 Java API中的Set和Map 276

13.3使用Set集合:域阻塞器 278

13.4使用Map集合:产品销售 281

13.5使用Map集合:用户管理 284

13.6使用树来实现Set和Map集合 288

13.7使用散列来实现Set和Map集合 289

关键概念 291

主要术语 292

自测题 292

练习题 292

程序设计项目 293

自测题答案 293

第14章 多路查找树 294

14.1整合树的概念 294

14.2 2-3树 294

14.2.1往2-3树中插入元素 295

14.2.2从2-3树中删除元素 297

14.3 2-4树 299

14.4 B树 300

14.4.1 B*树 301

14.4.2 B+树 301

14.4.3 B树的分析 302

14.5 B树的实现策略 302

关键概念 303

主要术语 303

自测题 304

练习题 304

程序设计项目 304

自测题答案 305

参考文献 305

第15章图 306

15.1无向图 306

15.2有向图 308

15.3网络 309

15.4常用的图算法 310

15.4.1遍历 310

15.4.2测试连通性 313

15.4.3最小生成树 314

15.4.4判定最短路径 317

15.5图的实现策略 317

15.5.1邻接列表 317

15.5.2邻接矩阵 318

15.6用邻接矩阵实现无向图 319

15.6.1 addEdge方法 323

15.6.2 addVertex方法 323

15.6.3 expandCapacity方法 324

15.6.4其他方法 325

关键概念 325

主要术语 325

自测题 326

练习题 326

程序设计项目 327

自测题答案 327

参考文献 328

附录A UML 329

A.1统一建模语言 329

A.2 UML类图 329

A.3 UML关系 330

关键概念 332

自测题 333

练习题 333

自测题答案 333

附录B 面向对象设计 334

B.1概述 334

B.2使用对象 335

B.2.1抽象 335

B.2.2创建对象 336

B.3类库与包 337

B.3.1 import声明 338

B.4状态与行为 338

B.5类 339

B.5.1实例数据 342

B.6封装 342

B.6.1可见性修饰符 343

B.6.2局部数据 344

B.7构造函数 344

B.8方法重载 345

B.9再谈引用 346

B.9.1空引用 346

B.9.2 this引用 347

B.9.3别名 348

B.9.4垃圾回收 350

B.9.5将对象作为参数传递 350

B.10 static修饰符 351

B.10.1静态变量 351

B.10.2静态方法 352

B.11包装类 352

B.12接口 353

B.12.1 Comparable接口 355

B.12.2 Iterator接口 355

B.13继承 355

B.13.1派生类 356

B.13.2 protected修饰符 358

B.13.3 super引用 358

B.13.4重载方法 359

B.14类的层次结构 359

B.14.1 Object类 360

B.14.2抽象类 361

B.14.3接口的层次结构 362

B.15 多态性 363

B.15.1引用和类的层次结构 363

B.15.2基于继承的多态性 364

B.15.3基于接口的多态性 365

B.16异常 367

B.16.1异常消息 367

B.16.2 try语句 368

B.16.3异常传播 369

B.16.4异常类的层次结构 369

关键概念 370

自测题 372

练习题 373

程序设计项目 373

自测题答案 375

附录C Java图形编程 376

C.1像素与坐标 376

C.2颜色表示 376

C.3绘制图形 377

C.4多边形与多直线 384

C.4 Ploygon类 387

练习题 388

程序设计项目 388

附录D图形用户接口 391

D.1 GUI的构成 391

D.1.1框架与面板 394

D.1.2按钮与动作事件 395

D.1.3确定事件源 396

D.2更多GUI组件 399

D.2.1文本域 399

D.2.2核选框 402

D.2.3单选按钮 405

D.2.4滑块 408

D.2.5组合框 412

D.2.6计时器 416

D.3布局管理器 420

D.3.1流水布局管理器 422

D.3.2边界布局管理器 424

D.3.3网格布局管理器 426

D.3.4方框布局管理器 428

D.3.5包容分层结构 430

D.4鼠标与按键事件 430

D.4. 鼠标事件 430

D.4.2按键事件 437

D.4.3扩展适配器类 441

D.5对话框 441

D.5.1文件选择器 443

D.5.2颜色选择器 446

D.6一些重要细节 446

D.6.1边框 446

D.6.2工具提示与助记符 450

D.7 GUI设计 455

关键概念 455

自测题 456

练习题 457

程序设计项目 457

自测题答案 459

附录E 散列 461

E.1概述 461

E.2散列函数 463

E.2.1余数法 463

E.2.2折叠法 463

E.2.3平方取中法 464

E.2.4基数转换法 464

E.2.5数字分析法 464

E.2.6长度相关法 465

E.2.7 Java语言中的散列函数 465

E.3解决冲突 465

E.3.1链地址法 466

E.3.2开放地址法 467

E.4从散列表删除元素 469

E.4.1从链地址实现中删除 470

E.4.2从开放地址实现中删除 470

E.5 Java集合API中的散列表 471

E.5.1 Hashtable类 471

E.5.2 HashSet类 472

E.5.3 HashMap类 473

E.5.4 IdentityHashMap类 474

E.5.5 WeakHashMap类 475

E.5.6 LinkedHashSet与LinkedHashMap 476

关键概念 477

自测题 477

练习题 478

程序设计项目 478

自测题答案 479

附录F正则表达式 481

返回顶部