×
数据结构与面向对象程序设计-C++版(第3版)

数据结构与面向对象程序设计-C++版(第3版)

1星价 ¥33.4 (3.8折)
2星价¥32.6 定价¥88.0

温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>

暂无评论
图文详情
  • ISBN:9787302152644
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:XXIII, 737
  • 出版时间:2007-06-01
  • 条形码:9787302152644 ; 978-7-302-15264-4

本书特色

本书是为计算机科学专业二级教程编写的,在美国许多大学称之为CS 2课程。本书继承了上一版关注基本数据结构的特点,将授课重点放在基本数据类型的规范说明、设计、实现和使用上。此外,本书还涵盖了重要的编程技术,并提供各自独立的抽象技术,面向对象编程,大O时间分析算法和排序等内容。本书的设计非常灵活,学生可以根据自身需要将学习的重点放在面向对象、递归以及排序上,以加快学习的进程。.
本书适合作为高等院校计算机及相关专业本科学生的教材,也是一本技术含量很高的专业参考书。
本书特色:..
◆全面介绍了标准模板库(STL)
◆全面回顾了C++语法和OOP概念;适合任何层次的学生
◆代码已经更新并经过测试,符合*新的ANSI/ISO C++标准
◆每一章中都精心设置自测习题和编程项目...

内容简介

本书是为计算机科学专业二级教程编写的,在美国许多大学称之为CS 2课程。本书继承了上一版关注基本数据结构的特点,将授课重点放在基本数据类型的规范说明、设计、实现和使用上。此外,本书还涵盖了重要的编程技术,并提供各自独立的抽象技术、面向对象编程、大O时间分析算法和排序等内容。本书的设计非常灵活,学生可以根据自身需要将学习的重点放在面向对象、递归以及排序上,以加快学习的进程本书适合作为高等院校计算机及相关专业本科学生的教材,也是一本技术含量很高的专业参考书。

目录


第1章软件开发阶段1.
1.1规范说明.设计和实现2
1.1.1概念设计:问题分解3
1.1.2前置条件和后置条件4
1.1.3使用其他程序员提供的函数6
1.1.4有关ANSI/ISOC++标准的实现问题7
1.1.5自测习题12
1.2运行时间分析13
1.2.1台阶计数问题13
1.2.2大O表示法17
1.2.3C++函数的时间分析18
1.2.4*坏情况.平均情况和*好情况下的时间分析20
1.2.5自测习题20
1.3测试和调试21
1.3.1选择测试数据21
1.3.2边界值22
1.3.3完全代码测试22
1.3.4调试23
1.3.5自测习题23
1.4本章小结24
1.5自测习题答案24
第2章抽象数据类型和C++类27
2.1类和成员28
2.1.1编程示例:节流阀类28
2.1.2使用类31
2.1.3节流阀类的示范程序33
2.1.4实现成员函数34
2.1.5自测习题37
2.2构造函数37
2.2.1节流阀类的构造函数38
2.2.2修改节流阀类的成员函数40
2.2.3内联成员函数41
2.2.4自测习题42
2.3使用命名空间.头文件和实现文件42
2.3.1创建命名空间42
2.3.2头文件43
2.3.3实现文件47
2.3.4使用命名空间中的数据项49
2.3.5自测习题51
2.4类和参数52
2.4.1编程示例:point类52
2.4.2默认参数55
2.4.3参数57
2.4.4当函数返回值的类型是类时62
2.4.5自测习题63
2.5操作符重载64
2.5.1重载二元比较操作符64
2.5.2重载二元算术操作符65
2.5.3重载输出和输入操作符66
2.5.4友元函数69
2.5.5Point类——内容汇总70
2.5.6操作符重载的总结72
2.5.7自测习题73
2.6本章小结73
2.7自测习题答案74
2.8编程项目77
第3章容器类85
3.1包类85
3.1.1包类——规范说明86
3.1.2包类——文档说明92
3.1.3包类——示范程序93
3.1.4包类——设计95
3.1.5类的不变式96
3.1.6包类——实现97
3.1.7包类——内容汇总103
3.1.8包类——测试106
3.1.9包类——分析107
3.1.10自测习题108
3.2编程项目:序列类109
3.2.1序列类——规范说明109
3.2.2序列类——文档说明112
3.2.3序列类——设计114
3.2.4序列类——实现的伪代码115
3.2.5自测习题117
3.3交互式测试程序117
3.4本章小结122
3.5自测习题答案123
3.6编程项目125
第4章指针和动态数组131
4.1指针和动态内存131
4.1.1指针变量132
4.1.2使用指针的赋值操作符134
4.1.3动态变量和new操作符135
4.1.4使用new分配动态数组136
4.1.5堆和bad_alloc异常138
4.1.6操作符delete139
4.1.7自测习题140
4.2指针和数组作为参数141
4.2.1指针作为值参数141
4.2.2数组参数143
4.2.3指针或数组作为常量参数144
4.2.4指针作为引用参数145
4.2.5自测习题147
4.3用动态数组实现的包类149
4.3.1指针成员变量150
4.3.2成员函数按需分配动态内存151
4.3.3值语义154
4.3.4析构函数156
4.3.5修改后的包类——类定义157
4.3.6修改后的包类——实现159
4.3.7修改后的包类——内容汇总163
4.3.8自测习题165
4.4有关动态类的规定166
4.4.14条规则166
4.4.2复制构造函数的特殊重要性166
4.4.3自测习题167
4.5编程项目:字符串类167
4.5.1以null终结的字符串167
4.5.2初始化字符串变量168
4.5.3空字符串168
4.5.4读写字符串变量169
4.5.5函数strcpy169
4.5.6函数strcat170
4.5.7函数strlen170
4.5.8函数strcmp171
4.5.9字符串类——规范说明171
4.5.10字符串类——设计175
4.5.11字符串类——实现175
4.5.12字符串类的示范程序177
4.5.13串接输出操作符178
4.5.14声明常量对象179
4.5.15产生构造函数的转换179
4.5.16在表达式中使用重载的操作符180
4.5.17本文的字符串类与C++库中的字符串类180
4.5.18自测习题180
4.6编程项目:多项式180
4.7本章小结184
4.8自测习题答案184
4.9编程项目186
第5章链表189
5.1链表的基本节点类189
5.1.1为节点声明类190
5.1.2在链表节点中使用typedef语句191
5.1.3头指针和尾指针191
5.1.4空指针192
5.1.5头指针或尾指针为NULL时的含义193
5.1.6节点构造函数193
5.1.7节点成员函数194
5.1.8成员选择操作符195
5.1.9自测习题198
5.2链表工具包199
5.2.1链表工具包——头文件199
5.2.2计算链表的长度200
5.2.3链表的参数203
5.2.4在链表头插入一个新节点204
5.2.5在非头节点处插入一个新节点206
5.2.6在链表中查找数据项210
5.2.7在链表中根据节点的位置寻找节点211
5.2.8复制链表212
5.2.9从链表头删除节点215
5.2.10删除链表中不在头部的节点216
5.2.11清除链表217
5.2.12链表工具包——内容汇总218
5.2.13使用链表工具包222
5.2.14自测习题222
5.3用链表实现的包类223
5.3.1第三个包——规范说明223
5.3.2第三个包——类定义223
5.3.3如何匹配包的value_type和节点的value_type226
5.3.4在类中使用动态内存应当遵循的规则227
5.3.5第三个包类——实现227
5.3.6第三个包类——内容汇总234
5.3.7自测习题236
5.4编程项目:用链表实现的序列类237
5.4.1修改的序列类——设计建议237
5.4.2修改后的序列类——值语义238
5.4.3自测习题239
5.5动态数组.链表和双向链表239
5.5.1做出抉择241
5.5.2自测习题241
5.6本章小结241
5.7自测习题答案242
5.8编程项目246
第6章利用模板.迭代器和STL进行软件开发251
6.1模板函数251
6.1.1模板函数的语法253
6.1.2使用模板函数253
6.1.3模板函数——交换两个值255
6.1.4模板函数的参数匹配256
6.1.5模板函数——在数组中寻找*大项257
6.1.6模板函数——在排序数组中插入一个数据项258
6.1.7自测习题260
6.2模板类260
6.2.1模板类的语法260
6.2.2关于模板实现文件的其他内容262
6.2.3模板类成员函数的参数匹配267
6.2.4使用模板类267
6.2.5编故事程序的细节270
6.2.6自测习题270
6.3标准模板类及其迭代器271
6.3.1多集模板类271
6.3.2多集成员272
6.3.3迭代器和[…)模式272
6.3.4测试迭代器的等同性274
6.3.5其他多集操作274
6.3.6集合算法275
6.3.7无效的迭代器276
6.3.8迭代器的标准类别277
6.3.9数组的迭代器278
6.3.10标准模板库列表类279
6.3.11自测习题280
6.4节点模板类280
6.4.1返回引用类型的函数281
6.4.2将引用返回值复制到别处时发生的情况283
6.4.3成员函数data目前需要两个版本283
6.4.4新节点的头文件和实现文件283
6.4.5自测习题290
6.5链表的迭代器291
6.5.1节点迭代器291
6.5.2节点迭代器源自std::iterator293
6.5.3节点迭代器的私有成员变量293
6.5.4节点迭代器——构造函数293
6.5.5节点迭代器——*操作符293
6.5.6节点迭代器——操作符++的两个版本294
6.5.7节点迭代器——相等和不相等的比较295
6.5.8常量集合的迭代器296
6.5.9自测习题297
6.6含有迭代器的包模板类的链表版本298
6.6.1如何为容器类提供迭代器298
6.6.2包迭代器299..
6.6.3将迭代器定义在包中的原因299
6.6.4自测习题306
6.7本章小结和5个包的总结306
6.8自测习题答案307
6.9编程项目311
第7章堆栈313
7.1堆栈和STL堆栈的简介313
7.1.1标准库的堆栈类315
7.1.2编程示例:翻转单词316
7.1.3自测习题316
7.2堆栈的应用317
7.2.1编程示例:括号的平衡317
7.2.2编程示例:算术表达式求值319
7.2.3算术表达式求值——规范说明319
7.2.4算术表达式求值——设计319
7.2.5算术表达式求值——实现325
7.2.6计算器程序使用的函数325
7.2.7算术表达式求值——测试与分析325
7.2.8算术表达式求值——改进326
7.2.9自测习题326
7.3堆栈类的实现327
7.3.1堆栈的数组实现327
7.3.2堆栈的链表实现330
7.3.3Koenig查找333
7.3.4自测习题333
7.4更复杂的堆栈应用334
7.4.1后缀表达式求值334
7.4.2将中缀表示法转换成后缀表示法336
7.4.3在中缀表达式中使用优先级规则338
7.4.4中缀转换为后缀的正确性340
7.4.5自测习题341
7.5本章小结342
7.6自测习题答案342
7.7编程项目344
第8章队列349
8.1队列和STL队列的简介349
8.1.1标准库的队列类350
8.1.2队列的使用350
8.1.3自测习题352
8.2队列的应用352
8.2.1编程示例:识别回文352
8.2.2自测习题355
8.2.3编程示例:洗车模拟355
8.2.4洗车模拟——规范说明355
8.2.5洗车模拟——设计355
8.2.6洗车模拟——实现洗车类358
8.2.7洗车模拟——实现模拟函数363
8.2.8自测习题365
8.3队列类的实现365
8.3.1队列的数组实现365
8.3.2有关队列中循环数组实现的讨论369
8.3.3队列的链表实现371
8.3.4实现细节372
8.3.5自测习题377
8.4优先队列377
8.4.1如何指定优先级378
8.4.2标准库的优先队列类378
8.4.3优先队列类——实现思想379
8.4.4自测习题379
8.5堆栈.队列和优先队列类的引用返回值379
8.6本章小结380
8.7自测习题答案380
8.8编程项目381
第9章递归思想385
9.1递归函数385
9.1.1递归思想的**个例子385
9.1.2跟踪递归调用387
9.1.3编程示例:write_vertical的一个扩展388
9.1.4深入分析递归389
9.1.5成功递归函数的一般形式392
9.1.6自测习题392
9.2递归的研究:分形和迷宫393
9.2.1编程示例:产生随机分形393
9.2.2用于产生随机分形的函数——规范说明395
9.2.3分形函数的设计和实现396
9.2.4如何显示随机分形398
9.2.5编程示例:穿越迷宫399
9.2.6穿越迷宫——规范说明399
9.2.7穿越迷宫——设计401
9.2.8穿越迷宫——实现401
9.2.9运用回溯穷举搜索的递归模式403
9.2.10编程示例:玩具熊游戏404
9.2.11自测习题406
9.3推导递归406
9.3.1如何确保没有无限递归408
9.3.2归纳推导递归函数的正确性410
9.3.3自测习题411
9.4本章小结411
9.5自测习题答案412
9.6编程项目414
第10章树419
10.1树的简介419
10.1.1二叉树419
10.1.2二叉分类树422
10.1.3一般树422
10.1.4自测习题423
10.2树的表示法424
10.2.1完全二叉树的数组表示法424
10.2.2使用节点类表示二叉树427
10.2.3自测习题428
10.3二叉树节点类429
10.3.1编程示例:猜动物432
10.3.2动物猜测程序——设计和实现434
10.3.3动物猜测程序——改进438
10.3.4自测习题441
10.4树的遍历441
10.4.1二叉树的遍历441
10.4.2从树的节点中输出数据445
10.4.3遍历中的问题446
10.4.4函数作为参数447
10.4.5apply函数的一个模板版本448
10.4.6使apply模板函数更具有通用性449
10.4.7树遍历的模板函数450
10.4.8自测习题451
10.5二叉搜索树458
10.5.1二叉搜索树存储机制458
10.5.2第6个包——类定义462
10.5.3第6个包——某些简单函数的实现462
10.5.4计算某个元素在二叉搜索树中出现的次数462
10.5.5添加一个新元素到二叉搜索树中463
10.5.6从二叉搜索树中移除某个元素464
10.5.7二叉搜索树的组合操作符467
10.5.8时间分析和迭代器469
10.5.9自测习题469
10.6本章小结469
10.7自测习题答案470
10.8编程项目473
第11章树项目479
11.1堆479
11.1.1堆的存储规则479
11.1.2使用堆结构实现的优先队列ADT480
11.1.3插入新项480
11.1.4删除项482
11.1.5自测习题484
11.2B树484
11.2.1非平衡树的问题484
11.2.2B树的规则485
11.2.3B树的一个示例486
11.2.4B树实现的集合ADT487
11.2.5在B树中查找项491
11.2.6在B树中插入项493
11.2.7B树的松散插入操作493
11.2.8修正子节点多余项的私有成员函数495
11.2.9回到成员函数Insert496
11.2.10采用自顶向下方法设计497
11.2.11从B树中删除项498
11.2.12B树的松散删除操作499
11.2.13解决子节点项短缺问题的私有成员函数501
11.2.14从B树中删除*大的项503
11.2.15外部B树505
11.2.16自测习题505
11.3树.日志和时间分析506
11.3.1二叉搜索树的时间分析506
11.3.2堆的时间分析507
11.3.3对数运算508
11.3.4对数级算法509
11.3.5自测习题510
11.4本章小结510
11.5自测习题答案510
11.6编程项目513
第12章查找515
12.1顺序查找和二分查找515
12.1.1顺序查找515
12.1.2顺序查找——分析516
12.1.3二分查找517
12.1.4二分查找——设计518
12.1.5二分查找——分析520
12.1.6标准库查找函数523
12.1.7用于有序域的函数523
12.1.8用于无序域的函数525
12.1.9STL查找函数526
12.1.10自测习题526
12.2开地址散列526
12.2.1散列简介526
12.2.2表类——声明529
12.2.3表类——设计530
12.2.4表ADT——实现533
12.2.5选择散列函数来减少冲突538
12.2.6再散列减少聚类538
12.2.7自测习题540
12.3链式散列540
12.3.1链式散列540
12.3.2自测习题542
12.4散列的时间分析542
12.4.1散列表的装填因子542
12.4.2自测习题545
12.5程序设计:使用STL向量的表类545
12.5.1新表类545
12.5.2在新表类中使用向量545
12.5.3常量模板参数545
12.5.4函数模板参数546
12.5.5实现新表类546
12.5.6自测习题547
12.6STL中的匹配和多重匹配547
12.7本章小结548
12.8自测习题答案549
12.9编程项目552
第13章排序555
13.1二次排序算法555
13.1.1选择排序——规范说明555
13.1.2选择排序——设计556
13.1.3选择排序——实现558
13.1.4选择排序——分析560
13.1.5插入排序561
13.1.6插入排序——分析564
13.1.7自测习题566
13.2递归排序算法567
13.2.1使用递归的分治法567
13.2.2合并排序569
13.2.3合并函数571
13.2.4动态内存在合并排序中的应用575
13.2.5合并排序——分析575
13.2.6文件的合并排序577
13.2.7快速排序577
13.2.8partition函数579
13.2.9快速排序——分析581
13.2.10快速排序——选择一个好的基准元素583
13.2.11自测习题583
13.3使用堆的O(nlogn)算法584
13.3.1堆排序584
13.3.2构建堆589
13.3.3向下重排590
13.3.4堆排序——分析591
13.3.5自测习题592
13.4使用库函数排序和随机访问迭代器592
13.4.1原始Cqusort函数592
13.4.2STL排序函数593
13.4.3使用迭代器编写一个排序函数593
13.5本章小结594
13.6自测习题答案595
13.7编程项目597
第14章派生类和继承601
14.1派生类601
14.1.1如何声明派生类603
14.1.2派生类的自动构造函数604
14.1.3使用派生类605
14.1.4派生类的自动赋值操作符606
14.1.5派生类的自动析构函数607
14.1.6覆盖继承的成员函数607
14.1.7自测习题608
14.2仿真生态系统608
14.2.1实现部分生物对象层次609
14.2.2organism类609
14.2.3animal类:具有新私有成员变量的派生类612
14.2.4如何为派生类提供新的构造函数612
14.2.5animal类的其他成员函数614
14.2.6自测习题617
14.2.7Herbivore类618
14.2.8池塘生活仿真程序620
14.2.9池塘生活——实现细节623
14.2.10使用池塘模型624
14.2.11动态内存的使用625
14.2.12自测习题625
14.3虚拟成员函数和game类625
14.3.1game类简介626
14.3.2受保护的成员629
14.3.3虚拟成员函数629
14.3.4虚拟析构函数630
14.3.5游戏类的受保护虚拟成员函数630
14.3.6玩ConnectFour游戏的派生类631
14.3.7ConnectFour游戏类的私有成员变量631
14.3.8ConnectFour的构造函数和重启函数633
14.3.9三个处理游戏状态的ConnectFour函数633
14.3.10三个处理移动的ConnectFour函数634
14.3.11Clone函数634
14.3.12编写派生自game类的游戏635
14.3.13使用minimax的游戏类的play算法635
14.3.14自测习题638
14.4本章小结638
14.5进阶阅读639
14.6自测习题答案639
14.7编程项目643
第15章图645
15.1图的定义645
15.1.1无向图645
15.1.2有向图648
15.1.3图的更多术语649
15.1.4航线的例子650
15.1.5自测习题650
15.2图的实现651
15.2.1使用邻接矩阵表示图651
15.2.2使用二维数组存储邻接矩阵652
15.2.3使用边列表表示图652
15.2.4使用边集表示图653
15.2.5哪种表示方法*好653
15.2.6编程示例:标签图类654
15.2.7用于增加顶点和边的成员函数655
15.2.8标签图类——重载下标操作符655
15.2.9下标操作符的常量版本656
15.2.10标签图类——函数neighbors657
15.2.11标签图类——实现657
15.2.12自测习题657
15.3图的遍历662
15.3.1深度优先搜索663
15.3.2宽度优先搜索666
15.3.3深度优先搜索——实现668
15.3.4宽度优先搜索——实现669
15.3.5自测习题669
15.4路径算法671
15.4.1判断某条路径是否存在671
15.4.2具有加权边的图672
15.4.3*短距离算法672
15.4.4*短路径算法680
15.4.5自测习题681
15.5本章小结681
15.6自测习题答案681
15.7编程项目683
附录AASCII字符集类687
附录B大O表达式689
附录C操作符的优先顺序693
附录D命令行编译和链接695
附录E使用旧式编译器699
附录FC++的输入和输出703
附录G选择库函数711
附录H标准模板类简介715
附录Iuseful函数的工具箱725
附录J基本格式指南729
附录K下载GNU编译器和软件731
附录L异常处理733...

展开全部

作者简介

Michael Main,于美国华盛顿州立大学获得博士学位,现任美国科罗拉多大学计算机科学系副教授。 Walter Savitch,美国加州大学圣地亚哥分校计算机科学系名誉教授。1960年于加州大学伯克利分校获得博士学位,曾担任加州大学圣地亚哥分校计算机科学系教授和认知科学跨学科博士项目主任。除本书外,他著有一系列编程语言教材,都广受欢迎,畅销不衰,被誉为读者*多的计算机编程语言图书作者。 刘东,同防科技大学计算机学院博士,长期从事计算机软件方面的工程与研究。曾参与开发某电机厂产品数据管理(PMD)系统、某轴承厂的工作流程管理系统等数据库应用平台。作为技术负责人,参与并完成了国家自然科学基金、973国家安全重大基础研究项目等多项研究课题。在《计算机研究与发展》、《计算机工程与科学》等杂志以及国际会议上发表多篇高水平学术论文。目前研究领域包括嵌入式系统设计、计算机系统可靠性分析、Linux操作系统实时化改造等。曾参与编写《Visual C++高级开发范例解析》等书籍。 张丽,国防科技大学计算机学院博士,主要研究方向为数据库与数据挖掘等。曾多次参与并完成国家自然科学基金、国家863基金项目。在《软件学报》、《计算机研究与发展》以及国际会议上发表多篇高水平学术论文。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航