精通C++ 第9版PDF电子书下载
- 电子书积分:30 积分如何计算积分?
- 作 者:(美)托尼·加迪斯,朱迪·沃尔特斯,戈德弗雷·穆甘达著;黄刚等译
- 出 版 社:北京:清华大学出版社
- 出版年份:2018
- ISBN:9787302503163
- 页数:1214 页
第1章 计算机和编程简介 1
1.1 为什么要使用程序 1
1.2 计算机系统:硬件和软件 2
1.2.1 硬件 2
1.2.2 软件 5
1.2.3 思考题 6
1.3 程序和编程语言 6
1.3.1 程序的定义 7
1.3.2 编程语言 8
1.3.3 源代码、目标代码和可执行代码 9
1.3.4 思考题 11
1.4 程序的组成 11
1.4.1 语言元素 11
1.4.2 代码行和语句 13
1.4.3 变量 14
1.4.4 变量定义 14
1.5 输入、处理和输出 15
思考题 15
1.6 编程过程 16
1.6.1 设计和创建程序 16
1.6.2 软件工程的定义 19
1.6.3 思考题 20
1.7 综合演练:显示个性化消息 20
1.7.1 复习和练习 21
1.7.2 编程挑战 23
第2章 C++简介 24
2.1 C++程序的部件 24
思考题 27
2.2 cout对象 27
2.3 #include指令 32
思考题 33
2.4 变量和赋值语句 33
2.5 常数 35
2.5.1 有时数字并不是数字 36
2.5.2 思考题 36
2.6 标识符 37
2.7 整型数据类型 39
2.7.1 整数和长整型常数 42
2.7.2 十六进制和八进制常数 43
2.7.3 思考题 43
2.8 浮点数据类型 44
2.8.1 浮点常数 45
2.8.2 将浮点值分配给整型变量 46
2.8.3 思考题 47
2.9 char数据类型 47
2.10 C++string类 51
2.10.1 使用string类 51
2.10.2 思考题 52
2.11 bool数据类型 52
2.12 确定数据类型的大小 53
2.13 变量赋值和初始化详解 54
2.14 作用域 56
2.15 算术运算符 56
思考题 60
2.16 注释 60
2.16.1 单行注释 61
2.16.2 多行注释 61
2.17 编程风格 62
2.18 综合演练:笑脸! 63
2.18.1 复习和练习 64
2.18.2 编程挑战 68
第3章 表达式和交互 71
3.1 cin对象 71
3.1.1 输入多个值 74
3.1.2 思考题 76
3.2 数学表达式 77
3.2.1 运算符的优先级 79
3.2.2 关联性 80
3.2.3 用圆括号分组 80
3.2.4 将代数表达式转换为编程语句 81
3.2.5 指数问题详解 81
3.2.6 思考题 83
3.3 数据类型转换和类型强制转换 85
3.3.1 类型强制转换 86
3.3.2 思考题 89
3.4 溢出和下溢 90
3.5 命名常量 91
思考题 93
3.6 多变量和组合赋值 94
3.6.1 组合赋值运算符 94
3.6.2 思考题 96
3.7 格式化输出 97
3.7.1 setprecision操作符 100
3.7.2 fixed操作符 103
3.7.3 showpoint操作符 104
3.7.4 left和right操作符 105
3.7.5 思考题 107
3.8 处理字符和字符串 107
3.8.1 输入字符串 108
3.8.2 输入一个字符 110
3.8.3 使用cin.get 110
3.8.4 混合使用cin>>和cin.get 112
3.8.5 使用cin.ignore 112
3.8.6 实用的string成员函数和运算符 113
3.8.7 使用C字符串 115
3.8.8 为C字符串赋值 116
3.8.9 跟踪一个C字符串的大小 117
3.8.10 读取一行输入 119
3.8.11 思考题 120
3.9 更多数学库函数 120
3.10 随机数字 122
3.10.1 限制随机数的范围 125
3.10.2 思考题 125
3.11 关于调试:手动跟踪程序 126
3.12 Green Fields Landscaping案例研究——第1部分 127
3.12.1 问题陈述 127
3.12.2 程序设计 128
3.12.3 程序 128
3.12.4 General Crates公司案例研究 130
3.13 综合演练:单词游戏 130
3.13.1 复习和练习 132
3.13.2 编程挑战 137
第4章 条件选择 143
4.1 关系运算符 143
4.1.1 关系的值 144
4.1.2 真值和假值 145
4.1.3 思考题 147
4.2 if语句 148
4.2.1 编程风格和if语句 151
4.2.2 要注意的3个常见错误 151
4.2.3 真值详解 153
4.2.4 标记 154
4.2.5 整数标记 155
4.2.6 思考题 155
4.3 if-else语句 156
4.3.1 使用if或if-else的时机 157
4.3.2 比较浮点数 159
4.3.3 思考题 161
4.4 if-else if语句 161
4.4.1 使用结尾else 166
4.4.2 思考题 167
4.5 菜单驱动程序 168
4.6 嵌套if语句 170
思考题 173
4.7 逻辑运算符 174
4.7.1 &&运算符 174
4.7.2 ||运算符 176
4.7.3 !运算符 178
4.7.4 布尔变量和!运算符 179
4.7.5 逻辑运算符的优先级和关联性 181
4.7.6 使用逻辑运算符检查数字范围 182
4.7.7 思考题 182
4.8 验证用户输入 183
4.9 块和作用域详解 185
4.9.1 同名变量 186
4.9.2 思考题 187
4.10 字符和字符串详解 188
4.10.1 比较字符 188
4.10.2 比较string对象 189
4.10.3 测试字符 191
4.10.4 思考题 193
4.11 条件运算符 194
4.11.1 使用条件表达式的值 195
4.11.2 思考题 197
4.12 switch语句 197
4.12.1 在菜单驱动系统中使用switch 203
4.12.2 思考题 205
4.13 枚举数据类型 206
思考题 209
4.14 关于测试和调试:验证输出结果 210
4.15 Green Fields Landscaping案例研究——第2部分 212
4.15.1 问题陈述 212
4.15.2 程序设计 213
4.15.3 程序 214
4.15.4 Crazy A1的计算机商业案例研究 216
4.16 综合演练:算命游戏 217
4.16.1 复习和练习 218
4.16.2 编程挑战 222
第5章 循环 228
5.1 循环介绍:while循环 228
5.1.1 while循环 228
5.1.2 while是一个预测试循环 230
5.1.3 无限循环 231
5.1.4 编程风格和while循环 232
5.1.5 思考题 234
5.2 使用while循环验证输入 235
5.3 递增和递减运算符 237
5.3.1 后缀和前缀模式 239
5.3.2 在数学表达式中使用递增和递减运算符 241
5.3.3 在关系表达式中使用递增和递减运算符 241
5.3.4 思考题 242
5.4 计数器 243
5.5 保持累计汇总 245
5.6 标记符号 247
思考题 248
5.7 do-while循环 249
5.7.1 toupper函数 251
5.7.2 与菜单一起使用do-while 252
5.7.3 思考题 254
5.8 for循环 254
5.8.1 for循环是一个预测试循环 257
5.8.2 避免修改for循环体中的计数器变量 257
5.8.3 更新表达式的其他形式 258
5.8.4 定义for循环初始化表达式中的变量 258
5.8.5 创建用户控制的for循环 258
5.8.6 在初始化和更新表达式中使用多个语句 259
5.8.7 省略for循环的表达式或循环体 260
5.8.8 思考题 260
5.9 关于软件工程:决定使用哪个循环 261
5.9.1 while循环 261
5.9.2 do-while循环 262
5.9.3 for循环 262
5.10 嵌套循环 262
5.11 打破循环 265
5.11.1 在嵌套循环中使用break 266
5.11.2 continue语句 267
5.11.3 思考题 268
5.12 使用文件进行数据存储 269
5.12.1 文件类型 270
5.12.2 文件访问方法 271
5.12.3 文件名和文件流对象 271
5.12.4 为输入输出文件设置程序 272
5.12.5 创建文件流对象并打开文件 273
5.12.6 关闭文件 274
5.12.7 将数据写入文件 274
5.12.8 从文件读取数据 276
5.12.9 读取位置 278
5.12.10 让用户指定一个文件名 279
5.12.11 使用旧版本C++中的c_str成员函数 280
5.12.12 检测文件的末尾 280
5.12.13 测试文件打开的错误 282
5.12.14 思考题 284
5.13 关于测试和调试:创建良好的测试数据 284
5.14 Central Mountain Credit Union案例研究 287
5.14.1 问题陈述 287
5.14.2 计算 287
5.14.3 变量 287
5.14.4 程序设计 288
5.14.5 详细伪代码 288
5.14.6 程序 289
5.14.7 测试程序 291
5.14.8 Lightening Lanes案例研究 291
5.15 综合演练:多彩世界 291
5.15.1 复习和练习 294
5.15.2 编程挑战 299
第6章 函数 305
6.1 模块化编程 305
6.2 定义和调用函数 306
6.2.1 空函数 307
6.2.2 调用函数 307
6.2.3 思考题 313
6.3 函数原型 314
6.4 将数据发送到函数中 315
6.5 按值传递数据 320
思考题 322
6.6 使用return语句 323
6.7 从函数返回值 325
6.7.1 定义一个返回值函数 325
6.7.2 调用返回值函数 326
6.8 返回一个布尔值 330
思考题 332
6.9 在菜单驱动程序中使用函数 332
6.10 局部变量和全局变量 336
6.10.1 局部变量 336
6.10.2 局部变量生存期 338
6.10.3 使用形参值初始化本地变量 338
6.10.4 全局变量 338
6.10.5 全局常数 340
6.10.6 具有相同名称的局部变量和全局变量 342
6.11 静态局部变量 343
思考题 345
6.12 默认实参 346
6.13 使用引用变量作为形参 349
6.13.1 按引用传递实参和按值传递实参的时机 353
6.13.2 将文件传递给函数 355
6.13.3 思考题 358
6.14 重载函数 359
6.15 使用exit()函数 364
思考题 365
6.16 桩模块和驱动模块 366
6.17 小乐透案例研究 369
6.17.1 问题陈述 369
6.17.2 程序设计 369
6.17.3 程序 371
6.17.4 High Adventrue TravelAgency旅行社案例研究 374
6.18 综合演练:发光的南瓜灯 374
6.18.1 复习和练习 378
6.18.2 编程挑战 381
第7章 类和对象简介 388
7.1 抽象数据类型 388
7.1.1 抽象 388
7.1.2 在软件开发中使用抽象 389
7.1.3 抽象数据类型 389
7.2 面向对象编程 389
7.3 关于类的介绍 391
7.3.1 使用已经知道的类 391
7.3.2 创建自己的类 392
7.3.3 访问修饰符 393
7.3.4 private和public成员的位置 393
7.4 创建和使用对象 394
7.4.1 访问对象的成员 395
7.4.2 访问器和设置器 396
7.5 定义成员函数 397
7.5.1 类成员函数的命名约定 399
7.5.2 避免陈旧数据 402
7.5.3 内联函数详解 402
7.5.4 思考题 403
7.6 构造函数 403
7.6.1 重载构造函数 407
7.6.2 默认构造函数 408
7.7 析构函数 409
思考题 410
7.8 私有成员函数 412
7.9 将对象传递给函数 415
7.9.1 常量引用形参 418
7.9.2 从函数返回一个对象 419
7.9.3 思考题 422
7.10 对象组合 422
思考题 425
7.11 关于软件工程:分离类规范、实现和客户端代码 426
7.11.1 使用多个文件的优点 431
7.11.2 在类对象中执行输入输出 432
7.11.3 思考题 432
7.12 结构 432
7.12.1 访问结构成员 433
7.12.2 显示和比较结构变量 435
7.12.3 初始化结构 436
7.12.4 嵌套结构 437
7.12.5 思考题 440
7.12.6 将结构传递给函数 441
7.12.7 从函数返回一个结构 443
7.12.8 思考题 444
7.13 枚举数据类型详解 445
7.13.1 在同一个语句中声明enum数据类型并定义变量 445
7.13.2 将整数赋值给enum变量 445
7.13.3 将枚举量赋值给int变量 446
7.13.4 使用数学运算符改变enum变量的值 446
7.13.5 使用枚举量输出值 446
7.13.6 使用枚举量控制循环 447
7.13.7 使用C++11中的强类型enum 448
7.14 Home Software公司OOP案例研究 449
7.14.1 私有成员变量 450
7.14.2 公共成员函数 450
7.14.3 类声明 450
7.14.4 withdraw会员函数 451
7.14.5 类接口 452
7.14.6 实现类 452
7.15 面向对象分析与设计介绍 456
7.15.1 寻找类 459
7.15.2 确定类的责任 462
7.15.3 这仅仅是个开始 465
7.15.4 对象的可重用性 465
7.15.5 面向对象与基于对象的编程 465
7.15.6 思考题 465
7.16 屏幕控制 466
7.16.1 屏幕光标定位 466
7.16.2 创建一个屏幕输入表单 469
7.17 综合演练:溜溜球动画 471
7.17.1 复习和练习 473
7.17.2 编程挑战 479
第8章 数组 486
8.1 保存多个值的数组 486
8.2 访问数组元素 488
8.3 输入和显示数组内容 489
8.3.1 将数据从文件读入数组 491
8.3.2 将数组的内容写入文件 493
8.3.3 C++中没有数组边界检查 493
8.3.4 注意大小差一错误 495
8.3.5 思考题 496
8.4 数组初始化 497
8.4.1 从数组元素1开始 501
8.4.2 数组部分初始化 501
8.4.3 隐式数组大小 503
8.4.4 初始化变量的新方法 503
8.5 基于范围的for循环 504
8.6 处理数组内容 507
8.6.1 复制一个数组到另一个 509
8.6.2 比较两个数组 510
8.6.3 对数字数组中的值求和 511
8.6.4 查找数字数组中数值的平均值 511
8.6.5 在数字数组中查找最高值和最低值 512
8.6.6 部分填充数组 514
8.6.7 为什么要使用数组 515
8.6.8 处理字符串 517
8.7 使用并行数组 519
思考题 521
8.8 typedef声明 523
8.9 数组作为函数参数 523
8.9.1 使用const数组形参 529
8.9.2 一些有用的数组函数 529
8.9.3 思考题 532
8.10 二维数组 533
8.10.1 将二维数组传递给函数 537
8.10.2 对二维数组的所有元素求和 539
8.10.3 对二维数组的行求和 539
8.10.4 对二维数组的列求和 540
8.11 三维或三维以上数组 541
思考题 543
8.12 矢量 544
8.12.1 定义和初始化矢量 545
8.12.2 存储和检索矢量中的值 546
8.12.3 使用C++ 11中基于范围的for循环和vector 548
8.12.4 使用push back成员函数 549
8.12.5 确定矢量的大小 550
8.12.6 从矢量中删除元素 552
8.12.7 清理矢量 553
8.12.8 检测一个空矢量 554
8.12.9 矢量成员函数汇总 556
8.12.10 思考题 556
8.13 对象数组* 557
8.13.1 思考题 562
8.13.2 结构数组 563
8.13.3 思考题 566
8.14 National Commerce Bank案例研究 567
8.15 综合演练:石头、剪刀、布 569
8.15.1 复习和练习 571
8.15.2 编程挑战 575
第9章 搜索、排序和算法分析 585
9.1 搜索算法简介 585
9.1.1 线性搜索 585
9.1.2 二分搜索 588
9.2 搜索对象数组 591
思考题 595
9.3 排序算法简介 595
9.3.1 冒泡排序 595
9.3.2 选择排序 599
9.3.3 思考题 604
9.4 对象数组排序 604
9.5 矢量排序和搜索 607
9.6 算法分析简介 609
9.6.1 计算问题和基本步骤 610
9.6.2 算法的复杂度 611
9.6.3 算法的最坏情况下的复杂度 613
9.6.4 平均情况下的复杂度 615
9.6.5 渐近复杂度与大O表示法 615
9.6.6 思考题 617
9.7 案例研究 617
9.8 综合演练:秘密消息 617
9.8.1 复习和练习 622
9.8.2 编程挑战 623
第10章 指针 627
10.1 指针和地址运算符 627
10.2 指针变量 629
10.3 数组与指针之间的关系 632
10.4 指针的算术运算 637
10.5 初始化指针 638
思考题 640
10.6 比较指针 641
10.7 使用指针作为函数形参 643
10.8 指向常量的指针和常量指针 647
10.8.1 指向常量的指针 647
10.8.2 将一个非常量实参传递到一个指向常量的指针中 648
10.8.3 常量指针 649
10.8.4 指向常量的常量指针 651
10.9 关于软件工程:动态内存分配 651
10.10 关于软件工程:从函数返回指针 655
10.10.1 停止内存泄漏 658
10.10.2 思考题 660
10.11 类对象和结构的指针 662
10.11.1 类对象的动态分配 663
10.11.2 使用指向类对象的指针作为函数形参 665
10.12 关于软件工程:选择对象成员 667
思考题 668
10.13 智能指针 669
10.13.1 unique_ptr类 669
10.13.2 指向数组的独占指针 672
10.13.3 unique_ptr类的成员函数 673
10.13.4 shared_ptr类 675
10.13.5 共享指针组 676
10.13.6 双重管理的危险 677
10.13.7 make_shared<T>()函数 677
10.13.8 shared_ptr成员函数 677
10.13.9 指向数组的共享指针 678
10.14 综合演练:对不起,考试时间已到 678
10.14.1 复习和练习 681
10.14.2 编程挑战 685
第11章 类和面向对象编程详解 688
11.1 this指针和常量成员函数 688
11.1.1 this指针 688
11.1.2 常量成员函数 692
11.2 静态成员 693
11.2.1 静态成员变量 694
11.2.2 静态成员函数 697
11.3 类的友元 700
思考题 705
11.4 按成员赋值 705
11.5 复制构造函数 707
11.5.1 默认复制构造函数 708
11.5.2 默认复制构造函数的缺陷 709
11.5.3 程序员定义的复制构造函数 712
11.5.4 复制构造函数的调用 715
11.5.5 思考题 716
11.6 运算符重载 716
11.6.1 重载赋值运算符 716
11.6.2 类赋值运算符的返回值 718
11.6.3 类赋值运算符的实现 718
11.6.4 重载其他运算符 722
11.6.5 运算符重载的一些基本问题 723
11.6.6 运算符重载的方法 724
11.6.7 重载算术和关系运算符 724
11.6.8 在独立函数和成员函数运算符之间作出选择 727
11.6.9 重载前缀++运算符 729
11.6.10 重载后缀++运算符 729
11.6.11 重载流插入和提取运算符 730
11.6.12 重载[]运算符 734
11.6.13 思考题 738
11.7 右值引用和移动操作 738
11.7.1 左值和右值 739
11.7.2 移动构造函数和移动赋值运算符 740
11.7.3 编译器使用移动操作的时机 748
11.7.4 默认操作 748
11.8 函数对象和Lambda表达式 749
11.8.1 谓词函数 750
11.8.2 使用函数对象作为函数的形参 751
11.8.3 排序数组和矢量 751
11.8.4 从矢量中删除元素 752
11.8.5 可存储值的函数对象 754
11.8.6 返回void的函数对象 755
11.8.7 在C++库中的函数类 756
11.8.8 Lambda表达式 758
11.8.9 思考题 759
11.9 类型转换运算符 759
11.10 转换构造函数 762
思考题 765
11.11 聚合和组合 766
11.11.1 成员初始化列表 766
11.11.2 通过指针聚合 768
11.11.3 聚合、组合和对象生命周期 769
11.11.4 Has-a关系 771
11.12 继承 772
11.12.1 普遍性和特殊性 772
11.12.2 继承与Is-a关系 772
11.12.3 继承和指针 774
11.12.4 超类和子类 777
11.12.5 多继承 777
11.13 受保护的成员和类访问 777
11.13.1 基类访问规范 780
11.13.2 思考题 781
11.14 构造函数、析构函数和继承 782
11.14.1 将实参传递给基类构造函数 784
11.14.2 思考题 786
11.15 覆盖基类函数 788
11.15.1 在基类函数和派生类覆盖版本之间做出选择 790
11.15.2 重载和覆盖的区别 790
11.15.3 获取被覆盖成员函数的访问权限 790
11.16 综合演练:将数据发布到互联网 791
11.16.1 复习和练习 795
11.16.2 编程挑战 800
第12章 C字符串和string类详解 804
12.1 C字符串 804
12.1.1 字符串常数 805
12.1.2 程序员定义的字符数组 806
12.1.3 指向char的指针 807
12.2 处理C字符串的库函数 809
12.2.1 strlen函数 809
12.2.2 传递C字符串实参 809
12.2.3 strcat函数 809
12.2.4 strcpy函数 810
12.2.5 比较C字符串 811
12.2.6 strcmp函数 812
12.2.7 结合使用!运算符与strcmp 815
12.2.8 排序字符串 815
12.2.9 思考题 816
12.3 数字和字符串之间的转换 818
12.3.1 使用字符串流对象进行数字转换 818
12.3.2 数字转换函数 820
12.3.3 思考题 822
12.4 编写自己的C字符串处理函数 822
12.4.1 使用指针传递C字符串实参 826
12.4.2 思考题 827
12.5 C++ string类详解 828
12.6 Advanced Software Enterprises案例研究 830
12.7 综合演练:程序执行环境 831
12.7.1 复习和练习 833
12.7.2 编程挑战 836
第13章 高级文件和I/O操作 841
13.1 输入和输出流 841
13.1.1 文件流类 841
13.1.2 文件打开模式 844
13.1.3 使用构造函数打开文件 844
13.1.4 输出格式化和I/O操作符 844
13.1.5 思考题 848
13.2 详细的错误测试 849
13.3 读取和写入文件的成员函数 852
13.3.1 getline函数 853
13.3.2 get系列成员函数 857
13.3.3 peek成员函数 858
13.3.4 put成员函数 860
13.3.5 倒回文件的开始位置 861
13.3.6 思考题 863
13.4 二进制文件 865
13.5 使用结构创建记录 869
思考题 873
13.6 随机访问文件 873
13.6.1 seekp和seekg成员函数 874
13.6.2 tellp和tellg成员函数 878
13.7 打开文件进行输入和输出 880
思考题 885
13.8 Online Friendship Connections案例研究:对象序列化 885
13.8.1 对象序列化 886
13.8.2 设计程序需要的类 886
13.8.3 确定序列化方案 887
13.9 综合演练:合并文件和设置HTML颜色 891
13.9.1 复习和练习 895
13.9.2 编程挑战 898
第14章 递归 902
14.1 递归介绍 902
14.1.1 直接递归和间接递归 907
14.1.2 思考题 907
14.2 递归计算阶乘函数 908
14.3 递归计算最大公约数函数 910
14.4 解决递归式定义的问题 911
14.5 递归二分搜索函数 913
14.6 关于问题解决和程序设计:快速排序算法 915
14.7 汉诺塔 919
14.8 关于问题解决:穷举和枚举算法 923
14.9 关于软件工程:递归与迭代 926
14.10 综合演练:中缀和前缀表达式 926
14.10.1 复习和练习 930
14.10.2 编程挑战 932
第15章 多态和虚函数 935
15.1 继承层次结构中的类型兼容性 935
15.1.1 继承的层次结构 935
15.1.2 继承的类型兼容性 935
15.1.3 基类指针的类型强制转换 939
15.2 多态和虚成员函数 941
15.2.1 动态和静态绑定 946
15.2.2 C++11的override和final关键字 947
15.2.3 防止成员函数被覆盖 949
15.3 抽象基类和纯虚函数 949
思考题 952
15.4 关于面向对象编程:组合与继承的对比 956
15.5 Secure Encryption System公司案例研究 960
15.5.1 理解问题 960
15.5.2 一个简单的加密/解密框架 961
15.6 综合演练:移动图形 964
15.6.1 复习和练习 971
15.6.2 编程挑战 973
第16章 异常、模板和标准模板库 975
16.1 异常 975
16.1.1 抛出异常 976
16.1.2 处理异常 976
16.1.3 异常未被捕获的情形 978
16.1.4 面向对象的异常处理类 978
16.1.5 多个异常 980
16.1.6 从异常类中提取信息 982
16.1.7 处理由new引发的bad alloc异常 985
16.1.8 栈展开 986
16.1.9 重新抛出异常 986
16.1.10 思考题 987
16.2 函数模板 987
16.2.1 swap函数模板 990
16.2.2 在函数模板中使用运算符 992
16.2.3 使用多种类型的函数模板 993
16.2.4 函数模板重载 994
16.2.5 定义模板函数 995
16.2.6 思考题 995
16.3 类模板 995
16.4 类模板和继承 1001
思考题 1004
16.5 标准模板库简介 1005
16.5.1 顺序容器 1005
16.5.2 关联容器 1005
16.5.3 迭代器 1006
16.5.4 迭代器的使用 1006
16.5.5 vector容器 1009
16.5.6 算法 1010
16.6 综合演练:单词变形游戏 1018
16.6.1 复习和练习 1021
16.6.2 编程挑战 1022
第17章 链表 1026
17.1 链表ADT简介 1026
17.1.1 链表对数组和矢量的优点 1026
17.1.2 链表的结构 1026
17.1.3 链表的C++表示 1027
17.1.4 使用构造函数初始化结点 1029
17.1.5 建立一个链表 1030
17.1.6 遍历链表 1030
17.1.7 思考题 1032
17.2 链表操作 1032
17.2.1 添加一个元素到链表中 1034
17.2.2 显示链表 1035
17.2.3 销毁链表 1035
17.2.4 按排序顺序建立链表 1037
17.2.5 将结点插入排序链表 1037
17.2.6 思考题 1040
17.2.7 从链表中删除元素 1040
17.2.8 思考题 1043
17.3 链表模板* 1044
17.4 递归链表操作 1048
17.4.1 递归链表函数 1048
17.4.2 递归成员函数 1051
17.4.3 递归add成员函数 1052
17.4.4 递归remove成员函数 1054
17.5 链表的变体 1057
17.6 STL list容器* 1058
17.7 Reliable Software Systems公司案例研究 1060
17.7.1 问题陈述 1060
17.7.2 修改和类设计规划 1061
17.7.3 类成员函数的实现 1061
17.8 综合演练:跑步穿过屏幕动画 1064
17.8.1 使用图像映射表示形状 1064
17.8.2 动画基础 1066
17.8.3 实施细节 1066
17.8.4 复习和练习 1070
17.8.5 编程挑战 1073
第18章 栈和队列 1076
18.1 栈ADT简介 1076
18.1.1 定义 1076
18.1.2 栈的应用 1076
18.1.3 静态栈和动态栈 1077
18.1.4 栈操作 1077
18.1.5 静态栈类 1077
18.1.6 处理栈异常 1082
18.1.7 栈模板 1083
18.2 动态栈 1083
18.3 标准模板库stack容器* 1087
思考题 1089
18.4 队列ADT简介 1089
18.4.1 定义 1089
18.4.2 队列的应用 1089
18.4.3 静态队列和动态队列 1090
18.4.4 队列操作 1090
18.4.5 使用循环数组检测满队列和空队列 1092
18.4.6 静态队列类 1092
18.4.7 静态队列中的溢出和下溢异常 1096
18.5 动态队列 1096
18.6 标准模板库deque和queue容器* 1100
18.6.1 deque容器 1100
18.6.2 queue容器适配器 1102
18.7 关于问题解决和程序设计:消除递归 1103
18.8 综合演练:将后缀表达式转换为中缀表达式 1107
18.8.1 复习和练习 1110
18.8.2 编程挑战 1112
第19章 二叉树 1116
19.1 二叉树的定义和应用 1116
19.1.1 二叉树的实现 1116
19.1.2 二叉树的应用 1118
19.1.3 思考题 1119
19.2 二叉搜索树操作 1119
19.2.1 创建二叉搜索树 1119
19.2.2 二叉搜索树操作的实现 1122
19.2.3 插入一个元素 1123
19.2.4 遍历树 1124
19.2.5 搜索二叉搜索树 1126
19.2.6 删除元素 1128
19.2.7 思考题 1136
19.3 二叉搜索树模板注意事项 1136
19.4 综合演练:谱系树 1137
19.4.1 复习和练习 1142
19.4.2 编程挑战 1143
附录A ASCII字符集 1146
附录B 运算符优先级和关联性 1150
附录C 思考题答案 1151
附录D 复习和练习奇数题的答案 1193
- 《HTML5从入门到精通 第3版》(中国)明日科技 2019
- 《新手养花从入门到精通》徐帮学编 2019
- 《C语言从入门到精通》王征,李晓波著 2020
- 《可爱Q版技法从入门到精通》石头编著 2019
- 《WPS Office办公应用从入门到精通》IT新时代教育 2018
- 《行政管理实操从入门到精通》任康磊著 2020
- 《C#从入门到精通 第5版》(中国)明日科技 2019
- 《VRay渲染器及项目实战从入门到精通》沙旭,徐虹,乐美青编著 2019
- 《AutoCAD 2020从入门到精通 中文版》CADCAMCAE技术联盟 2019
- 《UGNX12入门、精通与实战 中文版》周敏 2019
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《剑桥国际英语写作教程 段落写作》(美)吉尔·辛格尔顿(Jill Shingleton)编著 2019
- 《大学计算机实验指导及习题解答》曹成志,宋长龙 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《大学生心理健康与人生发展》王琳责任编辑;(中国)肖宇 2019
- 《大学英语四级考试全真试题 标准模拟 四级》汪开虎主编 2012
- 《大学英语教学的跨文化交际视角研究与创新发展》许丽云,刘枫,尚利明著 2020
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《复旦大学新闻学院教授学术丛书 新闻实务随想录》刘海贵 2019
- 《大学英语综合教程 1》王佃春,骆敏主编 2015
- 《大学物理简明教程 下 第2版》施卫主编 2020
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019