分类:编程开发
语言:简体中文
大小:未知
发布时间:13-08-11
出版者的话专家指导委员会译者序前言第1章 c++中的类 11.1 类 11.1.1 方法接口 11.1.2 对象 21.1.3 数据抽象 41.1.4 构造器 61.1.5 一个employee类 71.1.6 employee类的定义 11实验1:company项目 131.1.7 继承 131.1.8 受保护的访问 141.1.9 hourlyemployee类 15实验2:关于继承的更多的细节 181.1.10 运算符的重载 191.1.11 友元 20实验3:重载运算符“=”和运算符“]]” 21.1.1.12 信息隐藏 21总结 22习题 22编程项目1.1:一个sequence类 25第2章 容器类的存储结构 272.1 指针 272.1.1 堆和堆栈的对比 292.1.2 引用参数 292.1.3 指针字段 302.1.4 数组和指针 30实验4:指针变量赋值与动态变量赋值的对比 312.1.5 动态变量的存储空间释放 312.2 数组 322.3 容器类 332.3.1 容器类的存储结构 332.3.2 链式结构 342.3.3 迭代器 372.3.4 iterator类的设计和实现 39实验5:定义其他的迭代器运算符 402.3.5 pop_front方法 402.3.6 析构器 41实验6:重载运算符operator = 422.3.7 通用型算法 42实验7:更多关于通用型算法的知识 462.3.8 数据结构和标准模板库 46总结 46习题 47编程项目2.1:扩展linked类 47第3章 软件工程简介 493.1 软件开发生命周期 493.2 问题分析 493.3 程序设计 513.3.1 方法接口和字段 513.3.2 依赖关系图 533.4 程序实现 543.4.1 方法验证 55实验8:驱动器 563.4.2 正确性实现的可行性 563.4.3 方法效率评估 563.4.4 大o表示法 573.4.5 快速获取大o估算 593.4.6 平衡折中 623.4.7 运行时间分析 633.4.8 随机性 65实验9:计时和随机性 663.4.9 类型转换 663.5 程序维护 67总结 67习题 67编程项目3.1:linked类的进一步扩充 69第4章 递归 714.1 简介 714.2 阶乘 714.3 十进制到二进制的转换 75实验10:斐波纳契数 784.4 汉诺塔 784.5 回溯 864.6 折半查找 97实验11:迭代折半查找 1064.7 生成置换 1064.8 间接递归 1144.9 递归的代价 115总结 116习题 116编程项目4.1:汉诺塔的迭代版本 121编程项目4.2:八皇后问题 122编程项目4.3:马的遍历问题 123第5章 向量和双端队列 1275.1 标准模板库 1275.2 向量 1285.2.1 vector类的方法接口 1295.2.2 向量迭代器 1345.2.3 向量和其他容器的对比 1365.2.4 vector类可能的字段 1375.2.5 vector类的一个实现 137实验12:vector类的更多的实现细节 1425.3 向量的一个应用:高精度算法 1425.3.1 very_long_int类的设计 1435.3.2 very_long_int类的一个实现 144实验13:扩展very_long_int类 1475.4 双端队列 147实验14:惠普的deque类实现的更多细节 1545.5 双端队列的一个应用:非常长的整数 154总结 154习题 155编程项目5.1:扩展very_long_int类 157编程项目5.2:deque类的另一种实现 157第6章 表 1596.1 表 1596.1.1 list类的方法接口 1606.1.2 迭代器接口 1636.1.3 链表方法和向量或双端队列方法的差别 1656.1.4 list类的字段和实现 1666.1.5 list节点的存储 171实验15:更多list类的实现细节 174实验16:计时顺序容器 174实验17:迭代器,第二部分 1746.1.6 list类的其他实现 1756.2 链表应用:一个行编辑器 1776.2.1 editor类的设计 1806.2.2 editor类的实现 182总结 187习题 187编程项目6.1:扩展editor类 189编程项目6.2:list类的另一种设计和实现 195第7章 队列和堆栈 1977.1 队列 1977.1.1 queue类的方法接口 1977.1.2 使用queue类 2007.1.3 容器配接器 2017.1.4 一个接近的设计 2027.2 计算机仿真 2047.3 队列应用:洗车仿真 2057.3.1 程序设计 2077.3.2 carwash类的实现 2087.3.3 carwash方法的分析 2127.3.4 随机化到达时间 212实验18:随机化到达时间 2147.4 堆栈 2147.4.1 stack类的方法接口 2147.4.2 使用stack类 2157.4.3 stack类是一个容器配接器 2167.5 堆栈应用1:递归是如何实现的 2167.6 堆栈应用2:将中缀转换成后缀 2227.6.1 后缀表示法 2247.6.2 转换矩阵 2267.6.3 记号 227实验19:将中缀转化成后缀 2287.6.4 前缀表示法 228总结 230习题 231编程项目7.1:扩展洗车仿真 232编程项目7.2:求一个条件的值 233编程项目7.3:一个迭代的迷宫搜索 237编程项目7.4:queue类的另一个设计 237第8章 二叉树和折半查找树 2398.1 定义和属性 2398.1.1 二叉树定理 2458.1.2 外部路径长度 2478.1.3 二叉树的遍历 2488.2 折半查找树 2538.2.1 binsearchtree类 2548.2.2 binsearchtree类的iterator类 2558.2.3 binsearchtree类的字段和实现 2578.2.4 递归方法 2618.2.5 binsearchtree迭代器 269实验20:binsearchtree的平均高度 270总结 270习题 271编程项目8.1:binsearchtree类的另一种实现 274第9章 avl树 2779.1 平衡的折半查找树 2779.2 旋转 2779.3 avl树 2819.3.1 avl树的高度 2829.3.2 函数对象 284实验21:更多的函数对象的细节 2869.3.3 avltree类 2869.3.4 fixafterinsertion方法 2899.3.5 insert方法的正确性 2979.4 avl树的应用:一个简单的拼写检查器 299总结 302习题 302编程项目9.1:avltree类的erase方法 305编程项目9.2:改进的spellchecker项目 305第10章 红黑树 30710.1 红黑树 30710.1.1 红黑树的高度 31010.1.2 惠普的rb_tree类 31310.1.3 rb_tree类中的insert方法 315实验22:使用全部三种情况的红黑树插入 32010.1.4 erase方法 320实验23:erase的调用,其中应用了全部四种情况 33110.2 标准模板库的关联容器 33110.3 集合应用:再次讨论拼写检查器 33410.3.1 multiset类 335实验24:更多与set和multiset类相关的知识 33610.3.2 map类 33610.3.3 multimap类 339实验25:更多与map和multimap类相关的知识 340总结 340习题 340编程项目10.1:一个简单的辞典 343编程项目10.2:创建一个词汇索引 343第11章 优先队列和堆 34711.1 介绍 34711.1.1 priority_queue类 34811.1.2 priority_queue类的字段和实现 35011.1.3 堆 351实验26:优先队列中的公平性 35911.1.4 priority_queue类的另一种设计及实现 35911.2 优先队列的应用:霍夫曼编码 36011.2.1 huffman类的设计 36411.2.2 huffman类的实现 366总结 371习题 372编程项目11.1:解码一个消息 374第12章 排序 37712.1 介绍 37712.2 排序能有多快 38012.3 快速排序 38212.3.1 树排序 38212.3.2 堆排序 38312.3.3 归并排序 38512.3.4 快速排序 39012.3.5 分治法算法 395实验27:排序算法的运行时间 396总结 396习题 397编程项目12.1:排序一个文件 402第13章 查找和散列类 40513.1 分析查找的框架 40513.2 查找方式复习 40513.2.1 顺序查找 40513.2.2 折半查找 40613.2.3 红黑树查找 40813.3 hash_map类 40813.3.1 hash_map类中的字段 40913.3.2 散列 40913.3.3 链式 41213.3.4 iterator类的字段和实现 41913.3.5 hash_map类的实现 42013.3.6 链式散列分析 42313.3.7 value_type类 42513.3.8 应用 425实验28:hash_map计时 42713.4 hash_set类 42713.5 开放地址散列 42713.5.1 erase方法 43013.5.2 主聚类 43413.5.3 双散列 43513.5.4 开放地址散列分析 439总结 441习题 442编程项目13.1:使用链式和双散列构造一个符号表的运行时间比较 444第14章 图、树和网络 44514.1 无向图 44514.2 有向图 44714.3 树 44814.4 网络 45014.5 图算法 45114.5.1 迭代器 45114.5.2 连通性 45714.5.3 产生最小生成树 45814.5.4 寻找网络中的最短路径 46214.6 开发一个网络类 46514.7 network类 46514.7.1 network类中的字段 46714.7.2 network类的实现 46914.7.3 与边相关的方法的实现 47014.7.4 全局方法的实现 47214.7.5 get_minimum_spanning_tree方法 47514.7.6 get_shortest_path方法 47614.7.7 网络方法的时间花费估算 478实验29:货郎担问题 47914.7.8 network类的另一种设计和实现 47914.8 回溯通过网络 481总结 483习题 484编程项目14.1:完成邻接矩阵的实现 486编程项目14.2:回溯通过一个网络 486附录1 数学背景 489附录2 string类 501附录3 多态性 511参考文献 515索引 517
...