图书介绍

数据结构与算法分析 C++语言描述PDF|Epub|txt|kindle电子书版本网盘下载

数据结构与算法分析 C++语言描述
  • (美)Larry Nyhoff著;黄达明等译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:7302138397
  • 出版时间:2006
  • 标注页数:830页
  • 文件大小:53MB
  • 文件页数:851页
  • 主题词:数据结构-教材;算法分析-教材;C语言-程序设计-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

数据结构与算法分析 C++语言描述PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 软件开发1

1.1 问题分析和需求规格说明3

1.2 设计5

1.2.1 自顶向下设计5

1.2.2 面向对象设计7

1.2.3 小规模设计9

1.3 编码15

1.4 测试、运行和调试27

1.5 维护34

1.6 本章小结36

第2章 抽象数据类型入门40

2.1 对ADT及其实现的第一瞥40

2.2 C++的简单数据类型41

2.2.1 整型数据42

2.2.2 实型数据46

2.2.3 字符数据49

2.4.4 布尔数据50

2.3.1 Typedefs53

2.3.2 枚举53

2.3 程序员定义的数据类型53

2.3.3 类55

2.4 指针56

2.4.1 声明和初始化指针57

2.4.2 基本指针操作60

2.4.3 动态内存分配——new操作64

2.4.4 关于引用形参的注释65

2.5 本章小结68

3.1 数据结构,抽象数据类型和实现73

第3章 数据结构和抽象数据类型73

3.2 静态数组77

3.2.1 一维静态数组78

3.2.2 下标运算81

3.2.3 数组作为形参82

3.2.4 越界错误83

3.2.5 数组的问题86

3.3 多维数组88

3.3.1 二维数组88

3.3.2 高维数组89

3.3.3 数组的数组声明91

3.3.4 多维数组作函数参数95

3.4 动态数组97

3.4.1 new操作——动态数组98

3.4.2 指针的其他用法110

3.5 C风格结构(可选)112

指向结构的指针116

3.6 过程式编程117

过程式编程的例子118

3.7 本章小结123

4.1 过程式编程vs.面向对象编程129

第4章 OOP和ADT进阶——类129

4.2 类130

4.2.1 “传统的”(C)结构和OOP(C++)结构以及类之间的区别131

4.2.2 类声明131

4.3 例子:用户定义的Time类的第一个版本135

4.3.1 为什么不使所有成员都公有化137

4.3.2 实现一个类138

4.3.3 一些现象141

4.4 类构造函数142

4.5.1 复制操作——初始化和赋值150

4.5 其他类操作150

4.5.2 访问函数和更动函数151

4.5.3 重载运算符153

4.5.4 重载输入/输出运算符154

4.5.5 其他操作:前进和关系操作161

4.5.6 总结以及其他一些细节163

4.5.7 指向类对象的指针167

4.5.8 this指针168

4.6 本章小结171

第5章 标准C++输入/输出和字符串类176

5.1 C++标准I/O类177

5.1.1 istream类178

5.1.2 ostream类182

5.1.3 文件I/O:ifstream和ofstream类186

5.1.4 I/O类层次188

5.2 C++ String类型192

5.2.1 C风格的字符串193

5.2.2 一个字符串类195

5.2.3 C++ String类196

5.2.4 String流204

5.3 案例学习:文本编辑208

5.4 模式匹配介绍(可选)216

5.5 数据加密介绍(可选)219

5.5.1 数据加密标准(Data Encryption Standard)222

5.5.2 公共密钥加密(Public-Key Encryption)222

5.6 本章小结224

第6章 列表228

6.1 作为ADT的列表229

设计和创建一个列表类230

6.2.1 选择存储结构231

6.2 基于数组的列表实现231

6.2.2 实现操作232

6.2.3 一个使用静态数组存储的列表类234

6.3 使用动态分配的基于数组实现的列表242

6.3.1 类中的动态分配——析构函数、复制构造函数和赋值运算符246

6.3.2 最后一点253

6.4 对链表的介绍257

6.4.1 它们是什么257

6.4.2 实现基本列表操作258

6.4.3 小结262

6.5.1 节点结构264

6.5 在C++中基于指针来实现链表264

6.5.2 链表实现中的数据成员266

6.5.3 链表实现中的函数成员267

6.6 基于数组的链表实现271

6.6.1 节点结构272

6.6.2 存储池管理274

6.7 本章小结276

第7章 栈280

7.1 栈的介绍281

7.2.1 选择存储结构285

7.2 设计和创建一个Stack类——基于数组285

7.2.2 实现操作288

7.2.3 实现pop操作的算法290

7.2.4 完整的Stack类290

7.2.5 使用动态数组存储栈元素296

7.2.6 前瞻309

7.3 链式栈312

7.3.1 选择存储结构313

7.3.2 实现操作314

7.3.3 完整的Stack类:链表版本317

7.4 栈在函数调用中的使用324

7.5 案例学习:后缀(RPN)表示329

7.5.1 计算后缀表达式330

7.5.2 将中缀表达式转换成后缀表达式331

7.6 本章小节341

第8章 队列345

8.1 队列入门345

8.2 设计和创建一个Queue类——基于数组353

8.2.1 使用静态数组存储队列元素356

8.2.2 使用动态数组存储队列元素361

8.3.1 一种自然的链表实现365

8.3 链式队列365

8.3.2 使用循环链表374

8.4 队列的应用:缓冲区和调度376

8.5 案例学习:信息中心仿真379

8.5.1 问题分析和需求规格说明380

8.5.2 创建一个Simulation类380

8.5.3 Time类和Call类389

8.6 本章小结390

第9章 ADT实现:模板和标准容器393

9.1.1 从算法到算法394

9.1 介绍:可重用性和通用性的发展394

9.1.2 从数据到容器396

9.2 函数通用性——重载和模板396

9.2.1 重载397

9.2.2 函数模板399

9.2.3 另一个例子:显示一个数组403

9.3 类通用性——模板404

9.3.1 Typedef有什么错404

9.3.2 类模板405

9.3.3 Stack类模板的另一个版本417

9.3.4 对标准C++容器类模板的快速一瞥418

9.4 vector容器420

9.4.1 定义vector对象421

9.4.2 一些vector操作423

9.4.3 内部实现一瞥——增加容量427

9.4.4 对迭代器的第一次探讨430

9.4.5 一些牵涉到迭代器的vector函数成员433

9.4.6 综合比较:vector对数组434

9.5 案例学习:计算机系统登录统计438

9.6.1 二维vector对象443

9.6 多维vector(可选)443

9.6.2 二维vector操作444

9.7 其他标准容器——deque、stack以及queue447

9.7.1 STL的deque类模板447

9.7.2 我们的stack类模板的一个新(但是非必须的)版本450

9.7.3 STL的stack适配器452

9.7.4 STL的queue适配器453

9.8 Bitset和Valarray(可选)454

9.8.1 Bitset454

9.8.2 Valarray456

9.8.3 Slics、Mask、以及间接数组458

9.9 本章小结459

第10章 ADT实现——递归、算法分析以及标准算法464

10.1 递归464

10.1.1 递归的例子465

10.1.2 递归函数的编码466

10.1.3 糟糕递归的例子:Fibonacci数字468

10.1.4 例子:折半查找470

10.1.5 例子:回文检查程序473

10.2.1 Hanoi塔478

10.2 递归的例子:Hanoi塔:分析478

10.2.2 分析481

10.3 实现递归485

10.4 算法效率489

10.5 C++中的标准算法500

10.5.1 例:STL的sort算法500

10.5.2 STL算法的例子505

10.5.3 <numeric>库中的算法506

10.5.4 例:花样滑冰评判507

10.6 算法正确性证明(可选)508

10.6.1 例:计算平均值509

10.6.2 例:递归求幂函数510

10.6.3 总结511

10.7 本章小节513

第11章 其他链表结构519

11.1 单向链表的某些变种519

11.1.1 带头节点的链表519

11.1.2 循环链表522

11.2 稀疏多项式的链式实现526

11.3.1 双向链表534

11.3 双向链表和标准C++list534

11.3.2 标准list类模板536

11.3.3 例:互联网地址542

11.3.4 对C++中list的内部一瞥546

11.4 案例学习:长整数运算551

11.4.1 问题551

11.4.2 设计551

11.4.3 实现553

11.5.1 多序列表560

11.5 其他链列表560

11.5.2 稀疏矩阵561

11.5.3 广义表563

11.6 本章小结566

第12章 二叉树和散列表571

12.1 线性查找和折半查找的复习571

12.1.1 线性查找572

12.1.2 折半查找573

12.2 二叉树的介绍576

12.2.1 树的定义577

12.2.2 二叉树的一些例子578

12.2.3 二叉树的数组表示579

12.2.4 二叉树的链表表示581

12.3 作为递归数据结构的二叉树583

12.4 二叉查找树589

12.4.1 BST的实现590

12.4.2 遍历BST592

12.4.3 BST的查找596

12.4.4 BST中的插入操作599

12.4.5 从BST中删除一个节点602

12.4.6 不平衡(Lopsidedness)问题612

12.5 案例学习:计算机登录验证616

12.5.1 问题616

12.5.2 设计616

12.5.3 编码617

12.6 线索化二叉查找树(可选)620

12.7 散列表624

12.7.1 散列函数625

12.7.2 冲突处理策略626

12.7.3 改进627

12.8 本章小结631

第13章 排序636

13.1 某些计算时间为O(n2)的排序方法637

13.1.1 选择排序637

13.1.2 交换排序639

13.1.3 插入排序641

13.1.4 排序算法的性能比较643

13.1.5 间接排序644

13.2 堆、堆排序和优先队列647

13.2.1 堆648

13.2.2 堆的基本操作649

13.2.3 堆排序652

13.2.4 STL中的堆算法655

13.2.5 堆和优先队列658

13.3 快速排序662

13.3.1 拆分操作663

13.3.2 快速排序665

13.3.3 改进668

13.4 归并排序670

13.4.1 归并列表670

13.4.2 折半归并排序672

13.4.3 自然归并排序674

13.5 基数排序(Radix Sort)677

13.6 本章小结680

第14章 OOP和ADT684

14.1 OOP和ADT的简要历史和概览684

14.1.1 封装性685

14.1.2 继承性686

14.1.3 多态性和动态联编687

14.2 继承和面向对象设计688

14.2.1 第1个例子:许可证689

14.2.2 公有、私有和保护域693

14.2.3 派生类的形式693

14.2.4 类之间的Is-a、Has-a和Uses-a关系694

14.3 创建派生类696

14.3.1 派生类构造函数697

14.3.2 访问继承的数据成员697

14.3.3 复用操作698

14.3.4 例子:栈和有限栈700

14.4.1 问题703

14.4.2 设计703

14.4 案例学习:工资703

14.5 多态性、虚函数和ADT711

14.5.1 为什么需要多态性:联编问题711

14.5.2 虚函数和动态联编713

14.5.3 例1:使用句柄716

14.5.4 例2:栈和有限栈717

14.5.5 纯虚函数和抽象类720

14.6 案例学习:异构数据结构722

14.6.1 虚函数的必要性723

14.7 本章小结726

第15章 树729

15.1 案例学习:哈夫曼编码729

15.1.1 变长码730

15.1.2 立刻可解码性730

15.1.3 哈夫曼编码731

15.2 平衡树:AVL树735

15.2.1 例子:州简称的BST735

15.2.2 基本的重新平衡旋转操作743

15.3 2-3-4树、红-黑树、B-树和其他树748

15.3.1 2-3-4树750

15.3.2 红-黑树756

15.3.3 B-树760

15.3.4 用二叉树来表示树和森林761

15.4 STL中的关联容器——map(可选)765

15.5 本章小结771

第16章 图和有向图773

16.1 有向图773

16.1.1 邻接矩阵表示(Adjacency-Matrix Representation)775

16.1.2 邻接表表示(Adjacency-List Representation)776

16.2 搜索和遍历有向图781

16.2.1 深度优先搜索782

16.2.2 广度优先搜索783

16.2.3 遍历和最短路经问题785

16.2.4 NP完全性问题794

16.3 图796

16.3.1 邻接矩阵和邻接表表示797

16.3.2 边列表表示798

16.3.3 连通性799

16.4 本章小结810

附录A ASCll字符集812

附录B 小测验答案814

热门推荐