当前位置:首页 > 工业技术
精通C++  第9版
精通C++  第9版

精通C++ 第9版PDF电子书下载

工业技术

  • 电子书积分:30 积分如何计算积分?
  • 作 者:(美)托尼·加迪斯,朱迪·沃尔特斯,戈德弗雷·穆甘达著;黄刚等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2018
  • ISBN:9787302503163
  • 页数:1214 页
图书介绍:Intended for use in a two—term,three—term,or accelerated one—term C++programming sequence,this Ninth Edition of Starting Out with C++:Early Objects introduces the fundamentals of C++to novices and experienced programmers alike。
《精通C++ 第9版》目录
标签:精通

第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

相关图书
作者其它书籍
返回顶部