图书介绍

C++数据抽象和问题求解 第6版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

C++数据抽象和问题求解 第6版
  • (美)卡拉拉(CarranoF.M.),(美)亨利(HenryL.)著;景丽译 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302335993
  • 出版时间:2013
  • 标注页数:779页
  • 文件大小:351MB
  • 文件页数:796页
  • 主题词:C语言-程序设计-教材

PDF下载


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

下载说明

C++数据抽象和问题求解 第6版PDF格式电子书版下载

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

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

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

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

图书目录

第1章 数据抽象:墙1

1.1 面向对象的概念2

1.1.1 面向对象分析与设计2

1.1.2 面向对象解决方案的特征3

1.2 获得更好的解决方案4

1.2.1 内聚5

1.2.2 耦合5

1.3 规范6

1.3.1 操作契约7

1.3.2 特殊情况8

1.3.3 抽象9

1.3.4 信息隐藏10

1.3.5 最小且完整的接口11

1.4 抽象数据类型12

1.4.1 设计ADT14

1.4.2 涉及其他ADT的ADT17

1.5 ADT包18

1.5.1 确定行为18

1.5.2 指定数据和操作19

1.5.3 ADT的模板接口22

1.5.4 使用ADT包24

C++片段1 C++类29

C1.1 待解决的问题30

C1.1.1 私有数据字段31

C1.1.2 构造函数和析构函数32

C1.1.3 方法32

C1.1.4 防止编译错误33

C1.2 实现解决方案34

C1.3 模板35

C1.4 继承37

C1.4.1 基类和派生类38

C1.4.2 重写基类方法40

C1.5 虚方法和抽象类42

C1.5.1 虚方法42

C1.5.2 抽象类43

第2章 递归:镜子45

2.1 递归解决方案46

2.2 返回值的递归48

2.2.1 递归值函数:n的阶乘49

2.2.2 箱式跟踪52

2.3 执行动作的递归55

2.4 递归与数组62

2.4.1 逆置数组项63

2.4.2 折半查找64

2.4.3 查找数组中的最大值68

2.4.4 查找数组中第k个最小值69

2.5 组织数据71

2.6 更多示例75

2.6.1 Fibonacci数列(兔子繁殖)75

2.6.2 组织游行队伍78

2.6.3 从n个事物中选出k个79

2.7 递归和效率81

第3章 基于数组的实现91

3.1 办法92

3.1.1 核心方法93

3.1.2 使用大小固定的数组93

3.2 ADT包的基于数组的实现94

3.2.1 头文件95

3.2.2 定义核心方法96

3.2.3 测试核心方法98

3.2.4 实现更多方法101

3.2.5 删除项的方法103

3.2.6 测试106

3.3 在实现中使用递归107

3.3.1 getIndexOf方法107

3.3.2 getFrequencyOf方法108

C++片段2 指针、多态和内存分配113

C2.1 变量的内存分配和方法的前期绑定114

C2.2 需要解决的问题115

C2.3 指针与程序的自由存储116

C2.3.1 释放内存118

C2.3.2 避免内存泄漏119

C2.3.3 避免悬挂指针122

C2.4 虚方法和多态124

C2.5 数组的动态分配126

第4章 基于链表的实现129

4.1 预备知识130

4.2 ADT包的基于链表的实现133

4.2.1 头文件134

4.2.2 定义核心方法135

4.2.3 实现更多方法138

4.3 在基于链表的实现中使用递归143

4.4 测试多个ADT实现145

4.5 比较基于数组的实现和基于链表的实现148

第5章 作为问题求解技术的递归155

5.1 定义语言156

5.1.1 语法知识基础156

5.1.2 两种简单的语言158

5.2 代数表达式160

5.2.1 代数表达式的类型160

5.2.2 前缀表达式162

5.2.3 后缀表达式166

5.2.4 完全括号化表达式168

5.3 回溯168

5.3.1 查找航线168

5.3.2 八皇后问题173

5.4 递归和数学归纳法的关系179

5.4.1 递归阶乘函数的正确性179

5.4.2 Hanoi塔的工作量180

第6章 栈189

6.1 ADT栈190

6.1.1 在设计解决方案期间开发ADT190

6.1.2 ADT栈的规范192

6.2 栈的简单应用197

6.2.1 检查括号匹配197

6.2.2 识别语言中的字符串199

6.3 栈在代数表达式中的应用200

6.3.1 计算后缀表达式201

6.3.2 中缀表达式与后缀表达式的等价转换202

6.4 使用栈查找航班图205

6.5 栈和递归的关系212

C++片段3 异常221

C3.1 背景知识222

C3.2 断言223

C3.3 抛出异常224

C3.4 处理异常227

C3.4.1 多个catch块228

C3.4.2 未捕获的异常229

C3.5 程序员定义的异常类232

第7章 实现ADT栈235

7.1 基于数组的实现236

7.2 基于链表的实现239

7.3 在实现中使用异常243

第8章 列表247

8.1 指定ADT列表248

8.2 使用列表操作252

8.3 ADT列表的模板接口255

第9章 实现列表259

9.1 基于数组的ADT列表实现260

9.1.1 头文件261

9.1.2 实现文件262

9.2 基于链表的ADT列表实现266

9.2.1 头文件266

9.2.2 实现文件268

9.2.3 在LinkedList的方法中使用递归275

9.3 两种实现的比较279

第10章 算法的效率283

10.1 什么是好的解决方案284

10.2 测量算法的效率285

10.2.1 算法的执行时间286

10.2.2 算法增长率287

10.2.3 分析与大O表示法288

10.2.4 正确分析问题291

10.2.5 查找算法的效率293

第11章 排序算法及其效率299

11.1 基本排序算法300

11.1.1 选择排序300

11.1.2 起泡排序303

11.1.3 插入排序305

11.2 较快排序算法307

11.2.1 归并排序307

11.2.2 快速排序312

11.2.3 基数排序319

11.3 各种排序算法的比较321

C++片段4 类关系和重用325

C4.1 回顾继承326

C4.1.1 类的公有、私有和受保护部分331

C4.1.2 公有、私有和受保护继承332

C4.1.3 is-a和as-a关系333

C4.2 包含:has-a关系334

C4.3 回顾抽象基类335

第12章 有序表及其实现339

12.1 指定ADT有序表340

12.1.1 ADT有序表的模板接口342

12.1.2 使用有序表的操作343

12.2 基于链表的实现344

12.2.1 头文件344

12.2.2 实现文件345

12.2.3 基于链表的实现的效率348

12.3 使用ADT列表的实现348

12.3.1 包含349

12.3.2 公有继承352

12.3.3 私有继承356

第13章 队列和优先队列363

13.1 ADT队列364

13.2 ADT队列的简单应用367

13.2.1 读取字符串367

13.2.2 识别回文368

13.3 ADT优先队列369

13.4 应用:模拟371

13.5 面向位置和面向值的ADT379

第14章 队列和优先队列的实现387

14.1 ADT队列的实现388

14.1.1 使用ADT列表的实现388

14.1.2 基于链表的实现390

14.1.3 基于数组的实现394

14.1.4 比较实现399

14.2 ADT优先队列的实现400

C++片段5 运算符重载和友元访问405

C5.1 重载运算符406

C5.1.1 重载=进行赋值408

C5.1.2 重载+进行连接410

C5.2 友元访问和<<的重载411

第15章 树415

15.1 术语416

15.1.1 树的类型417

15.1.2 树的高度419

15.1.3 满二叉树、完全二叉树和平衡二叉树421

15.1.4 二叉树的最大和最小高度422

15.2 ADT二叉树425

15.2.1 二叉树的遍历425

15.2.2 二叉树的操作428

15.2.3 ADT二叉树的模板接口430

15.3 ADT二叉查找树432

15.3.1 二叉查找树的操作433

15.3.2 查找二叉查找树434

15.3.3 创建二叉查找树435

15.3.4 遍历二叉查找树437

15.3.5 二叉查找树操作的效率437

第16章 树的实现443

16.1 二叉树中的节点444

16.1.1 基于数组的表示444

16.1.2 基于链表的表示446

16.2 ADT二叉树基于链表的实现447

16.2.1 头文件447

16.2.2 实现450

16.3 ADT二叉查找树基于链表的实现458

16.3.1 ADT二叉查找树操作的算法458

16.3.2 BinarySearchTree类469

16.4 在文件中保存二叉查找树471

16.5 树排序474

16.6 一般树474

C++片段6 迭代器479

C6.1 迭代器480

C6.1.1 常见的迭代器操作481

C6.1.2 使用迭代器操作482

C6.1.3 实现迭代器483

C6.2 迭代器的高级功能485

第17章 堆489

17.1 ADT堆490

17.2 堆的基于数组的实现493

17.2.1 基于数组的堆操作的算法494

17.2.2 实现498

17.3 ADT优先队列的堆实现502

17.4 堆排序504

第18章 字典及其实现511

18.1 ADT字典512

18.2 可能的实现517

18.2.1 ADT字典的基于数组的有序实现519

18.2.2 ADT字典的二叉查找树实现521

18.3 选择实现523

18.4 散列529

18.4.1 散列函数532

18.4.2 解决冲突534

18.4.3 散列的效率539

18.4.4 如何确立散列函数542

18.4.5 字典遍历:散列的低效操作543

18.4.6 使用散列和分离链实现ADT字典544

第19章 平衡查找树551

19.1 平衡查找树552

19.2 2-3树553

19.2.1 遍历2-3树555

19.2.2 查找2-3树556

19.2.3 在2-3树中插入数据558

19.2.4 从2-3树中删除数据562

19.3 2-3-4树567

19.3.1 查找和遍历2-3-4树569

19.3.2 在2-3-4树中插入数据569

19.3.3 从2-3-4树中删除数据572

19.4 红-黑树573

19.4.1 查找和遍历红-黑树575

19.4.2 红-黑树的插入和删除575

19.5 AVL树577

第20章 图583

20.1 术语584

20.2 将图作为ADT587

20.3 图的遍历591

20.3.1 深度优先查找592

20.3.2 广度优先查找593

20.4 图的应用595

20.4.1 拓扑排序595

20.4.2 生成树598

20.4.3 最小生成树600

20.4.4 最短路径603

20.4.5 回路606

20.4.6 一些复杂问题608

第21章 外部存储中的数据处理615

21.1 了解外部存储616

21.2 排序外部文件的数据618

21.3 外部字典624

21.3.1 确定外部文件的索引626

21.3.2 外部散列629

21.3.3 B-树632

21.3.4 遍历639

21.3.5 多索引640

C++片段7 标准模板库647

C7.1 STL容器648

C7.1.1 STL容器适配器649

C7.1.2 顺序容器650

C7.1.3 关联容器654

C7.2 STL算法657

附录A 回顾C++基础659

附录B 编程中的重要主题697

附录C 统一建模语言719

附录D 软件生命周期727

附录E 数学归纳法733

附录F 算法验证737

附录G C++文件基础741

附录H C++头文件和标准函数751

附录I C++文档系统755

附录J ASCII字符代码757

附录K 针对Java编程人员的C++知识759

附录L 针对Python编程人员的C++知识767

热门推荐