当前位置:主页 > 计算机电子书 > 程序设计 > C++ pdf电子书
C++数据抽象和问题求解

C++数据抽象和问题求解 PDF 影印第6版

  • 更新:2019-07-08
  • 大小:147.1 MB
  • 类别:C++
  • 作者:卡拉拉
  • 出版:清华大学出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

C++数据抽象和问题求解》是由清华大学出版社出版的一本关于C++方面的书籍,作者是卡拉拉,主要介绍了关于C++、数据抽象、问题求解方面的知识内容,目前在C++类书籍综合评分为:7.6分。

书籍介绍

C++数据抽象和问题求解

内容介绍

这部經典、热销的数据结构教材内容详解了数据抽象的基本知识,注重做为面向对象方法基本基本原理的标准和执行中间的差别。书中应用的计算机专业标准和定义及其UML图有利于提高大学生的了解。

这书特性

◆详解了数据抽象,注重标准和建立中间的差别
◆普遍详细介绍了各种各样面向过程的编程技术
◆重中之重是关键的数据结构,而并不是非必要的C++語言英语的语法
◆表明了类和ADT在解决问题全过程中的功效
◆展现出ADT的关键运用,如搜索飞机航班图、事件驱动的仿真模拟和八皇后问题
◆绝大多数章节目录中的事例都应用了规范模板库(STL)
◆详细介绍了递归
◆附录中出示了基础的C++英语的语法,以协助大学生从别的语言转换为C++

目录

  • 第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 设计ADT 14
  • 1.4.2 涉及其他ADT的ADT 17
  • 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 在设计解决方案期间开发ADT 190
  • 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 面向位置和面向值的ADT 379
  • 第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 将图作为ADT 587
  • 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

资源获取

资源地址1:https://pan.baidu.com/s/1dNDMhYBAmPSlL40FCZlByA(密码:akcv)

相关资源

网友留言