上海地区专业的网上书店
一次性购物满100元即可享受VIP会员价格优惠
网站地图 |登录/注册 |购物车 |会员中心 |帮助中心 |友情链接
首页 | 新书上市 | 畅销推荐 | 礼品图书 | 分类浏览 | 出版社专区 | 图书热评 | 求购登记 | 顾客留言 | 图书拾零
 
   图书搜索: 高级搜索

数据结构——C++版

数据结构——C++版
新书城图书编号:1659
图书ISBN:7302074917
出版时间:2004-1-1
出版社:清华大学出版社
作者:(美)马立克 著,王海涛,丁炎炎 译
市场价格:¥92
普通会员:¥73.6    80
VIP会员:¥69   75
购买商品 收藏商品  
【图书分类】
计算机图书>>程序语言
【图书简介】
本书是一本针对CS2课程 基础性完全读本。它专门为学生编写和设计,通过大量简洁而有条理的说明和示例,运用C++成功地描述了算法。这本书涉及了所有的CS2主题,例如结构化模板库、二叉搜索树、图算法、以及搜索和排序。
D.S.Malik是Creighton大学的数学和计算机科学教授。他于1985年在Creighton大学获得了Ph.D。自那以后,他就一直在Creighton大学讲授计算机编程方面的课程。他已经在抽象代数学、模糊自控理论和语言、模糊逻辑及其应用和信息科学等领域发表了45篇论文并出版了6本著作。
【图书评论】
发表新的评论   
浏览数据结构——C++版全部评论>>   
【图书目录】
第1章  软件工程基本原理和C++类 1
1.1  软件的生命周期 1
1.2  软件开发阶段 2
1.2.1  分析阶段 2
1.2.2  设计阶段 2
1.2.3  实现阶段 3
1.2.4  测试和调试 5
1.3  算法分析:大O表示法 6
1.4  类 12
1.4.1  统一建模语言图 15
1.4.2  变量(对象)的声明 15
1.4.3  访问类的成员 16
1.4.4  类的内置运算 17
1.4.5  赋值运算符和类 17
1.4.6  类的作用域 17
1.4.7  函数和类 18
1.4.8  引用参数和类对象(变量) 18
1.4.9  成员函数的实现 19
1.4.10  构造函数 23
1.4.11  调用构造函数 26
1.4.12  构造函数和默认参数 26
1.4.13  析构函数 27
1.4.14  结构 27
1.5  数据抽象、类和抽象数据类型 27
1.6  编程示例:糖果机 36
1.6.1  问题分析和算法设计 36
1.6.2  收银机 36
1.6.3  控制装置 38
1.6.4  主程序 40
1.7  标识类、对象和操作 45
1.8  快速回顾 45
1.9  练习题 47
1.10  编程练习 51
第2章  面向对象的设计方法和C++ 54
2.1  继承 54
2.1.1  重新定义基类的成员函数 57
2.1.2  派生类与基类的构造函数 58
2.1.3  派生类的头文件 64
2.1.4  头文件的多重包含 64
2.1.5  类的保护成员 66
2.1.6  三种继承方式:公有继承,保护继承或私有继承 66
2.2  聚合 67
2.3  多态:运算符和函数重载 71
2.4  运算符重载 71
2.4.1  为什么要重载运算符 71
2.4.2  运算符重载 72
2.4.3  运算符函数的语法 73
2.4.4  重载运算符的限制 73
2.4.5  this指针 73
2.4.6  类的友元函数 77
2.4.7  定义友元函数 77
2.4.8  运算符函数的两种形式:成员函数和非成员函数 80
2.5  重载二元运算符 81
2.5.1  重载二元运算符(算术运算符和关系运算符)为成员函数 81
2.5.2  重载二元运算符(算术运算符和关系运算符)为非成员函数 83
2.5.3  重载输出(<<)和输入(>>)运算符 84
2.5.4  重载输出运算符(<<) 84
2.5.5  重载输入运算符(>>) 85
2.5.6  重载运算符形式的选择:成员函数和非成员函数 87
2.6  编程示例:复数 87
2.7  函数重载 92
2.8  模板 92
2.8.1  函数模板 93
2.8.2  类模板 95
2.8.3  头文件和类模板的实现文件 97
2.9  快速回顾 97
2.10  练习题 99
2.11  编程练习 109
第3章  指针和基于数组的表 113
3.1  指针数据类型和指针变量 113
3.1.1  声明指针变量 113
3.1.2  取地址运算符(&) 114
3.1.3  取值运算符(*) 115
3.1.4  类、结构和指针变量 120
3.1.5  初始化指针变量 123
3.1.6  动态变量 123
3.1.7  指针变量的运算 125
3.2  动态数组 126
3.2.1  函数和指针 128
3.2.2  指针和函数返回值 128
3.3  浅复制、深复制与指针 129
3.4  类和指针:一些特例 131
3.4.1  析构函数 132
3.4.2  赋值运算符 133
3.4.3  重载赋值运算符 135
3.4.4  复制构造函数 138
3.5  重载数组索引(下标)运算符([]) 144
3.6  编程示例:newString 145
3.7  基于数组的表 151
3.7.1  复制构造函数 160
3.7.2  重载赋值运算符 161
3.7.3  搜索 161
3.7.4  插入 163
3.7.5  删除 163
3.7.6  各种表操作的时间复杂度 164
3.8  编程示例:多项式的运算 168
3.9  快速回顾 175
3.10  练习题 177
3.11  编程练习 182
第4章  标准模板类库 185
4.1  STL的组成部分 185
4.1.1  容器类型 186
4.1.2  顺序容器 186
4.2  顺序容器:向量容器 186
4.2.1  声明vector对象 187
4.2.2  为向量容器声明一个迭代器 189
4.2.3  容器以及begin和end函数 190
4.2.4  对所有容器通用的成员函数 193
4.2.5  顺序容器公共的成员函数 194
4.2.6  copy算法 194
4.2.7  ostream迭代器和copy函数 196
4.3  顺序容器:双端队列 198
4.4  迭代器 201
4.4.1  迭代器的类型 202
4.4.2  输入迭代器 202
4.4.3  输出迭代器 202
4.4.4  前向迭代器 203
4.4.5  双向迭代器 203
4.4.6  随机访问迭代器 203
4.4.7  流迭代器 205
4.5  编程示例:成绩报告单 206
4.5.1  问题分析与算法设计 208
4.5.2  主程序 219
4.5.3  程序清单 221
4.6  快速回顾 226
4.7  练习题 227
4.8  编程练习 231
第5章  链表 234
5.1  链表 234
5.2  链表的属性 236
5.3  项的插入和删除 239
5.3.1  插入 239
5.3.2  删除 241
5.4  构建链表 243
5.4.1  正向构建链表 243
5.4.2  反向构建链表 247
5.5  ADT链表 248
5.5.1  默认构造函数 251
5.5.2  销毁表 252
5.5.3  初始化表 252
5.5.4  重载输出运算符 253
5.5.5  表的长度 253
5.5.6  检索第一个节点的数据 253
5.5.7  检索最后一个节点的数据 254
5.5.8  搜索表 254
5.5.9  在表头插入节点 255
5.5.10  在表尾插入节点 256
5.5.11  删除节点 256
5.5.12  复制表 261
5.5.13  析构函数 262
5.5.14  复制构造函数 262
5.5.15  重载赋值运算符 263
5.6  有序链表 264
5.6.1  搜索表 265
5.6.2  插入节点 266
5.6.3  删除节点 270
5.6.4  有序链表的头文件 271
5.7  双向链表 273
5.7.1  默认构造函数 276
5.7.2  isEmptyList 276
5.7.3  销毁表 277
5.7.4  初始化表 277
5.7.5  表的长度 277
5.7.6  重载输出运算符 278
5.7.7  反向打印表 278
5.7.8  搜索表 279
5.7.9  第一个和最后一个元素 279
5.7.10  插入节点 280
5.7.11  删除节点 282
5.8  STL顺序容器:list 284
5.9  带有头节点和尾节点的链表 289
5.10  循环链表 290
5.11  编程示例:Video Store 291
5.12  快速回顾 309
5.13  练习题 310
5.14  编程练习 315
第6章  递归 319
6.1  递归的定义 319
6.1.1  直接递归和间接递归 321
6.1.2  无穷递归 321
6.2  递归法解决问题 322
6.3  递归还是迭代 337
6.4  递归和回溯:n-皇后问题 338
6.4.1  回溯 338
6.4.2  回溯和4皇后问题 340
6.4.3  8皇后问题 341
6.5  快速回顾 345
6.6  练习题 346
6.7  编程练习 348
第7章  堆栈 353
7.1  堆栈 353
7.2  使用数组实现堆栈 355
7.2.1  初始化堆栈 358
7.2.2  销毁堆栈 359
7.2.3  空堆栈 359
7.2.4  满堆栈 359
7.2.5  入栈 359
7.2.6  返回栈顶元素 361
7.2.7  出栈 361
7.2.8  复制堆栈 362
7.2.9  构造函数和析构函数 363
7.2.10  复制构造函数 364
7.2.11  重载赋值运算符(=) 364
7.2.12  堆栈的头文件 365
7.3  编程示例:求最高GPA 366
7.4  堆栈的链表实现 370
7.4.1  默认构造函数 372
7.4.2  销毁堆栈 373
7.4.3  初始化堆栈 373
7.4.4  入栈 374
7.4.5  返回栈顶元素 377
7.4.6  出栈 377
7.4.7  由类linkedListType派生而来的堆栈 379
7.5  堆栈应用:后缀表达式计算器 381
7.5.1  主算法 385
7.5.2  完整的程序清单 387
7.6  消除递归:反向打印一个链表的非递归算法 391
7.7  STL堆栈类(堆栈容器适配器) 396
7.8  快速回顾 398
7.9  练习题 398
7.10  编程练习 402
第8章  队列 404
8.1  队列 404
8.1.1  队列操作 404
8.1.2  队列的数组实现 405
8.2  队列的链式实现 416
8.3  从类linkedListType派生而来的队列 420
8.4  STL类queue(队列容器适配器) 423
8.5  优先级队列 425
8.6  队列的应用:模拟 426
8.6.1  设计队列系统 427
8.6.2  客户 427
8.6.3  服务器 430
8.6.4  服务器表 433
8.6.5  等待客户的队列 438
8.6.6  主程序 440
8.7  快速回顾 447
8.8  练习题 447
8. 9  编程练习 451
第9章  搜索算法 453
9.1  搜索算法 453
9.1.1  顺序搜索 456
9.1.2  顺序搜索算法分析 457
9.1.3  有序表 458
9.1.4  折半搜索 459
9.1.5  折半搜索算法的性能 462
9.1.6  将数据项插入到一个有序表 463
9.2  基于比较的搜索算法的下限 465
9.3  散列算法 466
9.3.1  散列函数:示例 467
9.3.2  冲突解决 467
9.3.3  冲突解决:开型寻址法 467
9.3.4  二次探测 469
9.3.5  删除:开型寻址法 472
9.3.6  散列法:使用二次探测来实现 473
9.3.7  冲突解决:链地址法(开散列方法) 476
9.3.8  散列法性能分析 477
9.4  快速回顾 478
9.5  练习题 480
9.6  编程练习 481
第10章  排序算法 484
10.1  排序算法 484
10.2  选择排序: 基于数组的表 484
10.3  插入排序: 基于数组的表 490
10.4  插入排序: 基于链表的表 495
10.5  基于比较的排序算法的下限 499
10.6  快速排序:基于数组的表 500
10.7  归并排序: 基于链表的表 505
10.7.1  划分 507
10.7.2  归并 509
10.7.3  分析:归并排序 512
10.8  堆排序: 基于数组的表 512
10.8.1  构建堆 513
10.8.2  分析:堆排序 520
10.9  再论优先级队列 520
10.9.1  在优先级队列中插入一个元素 521
10.9.2  从优先级队列删除一个元素 521
10.10  编程示例:选举结果 521
10.10.1  问题分析和算法设计 522
10.10.2  主程序 528
10.10.3  对姓名排序 530
10.10.4  处理投票数据 532
10.10.5  计算选票数的总和 534
10.10.6  打印标题和结果 534
10.11  快速回顾 538
10.12  练习题 539
10.13  编程练习 540
第11章  二叉树 543
11.1  二叉树 543
11.2  二叉树的遍历 549
11.2.1  中序遍历 549
11.2.2  前序遍历 549
11.2.3  后序遍历 549
11.2.4  二叉树的实现 552
11.3  二叉搜索树 560
11.3.1  search函数 562
11.3.2  Insert函数 564
11.3.3  Delete函数 565
11.4  二叉搜索树分析 572
11.5  二叉树的非递归遍历算法 573
11.5.1  非递归中序遍历 573
11.5.2  非递归前序遍历 574
11.5.3  非递归后序遍历 576
11.6  二叉树遍历和作为参数的函数 577
11.7  AVL(平衡)树 580
11.7.1  AVL树的插入操作 582
11.7.2  AVL树的旋转 587
11.7.3  AVL树的删除操作 598
11.7.4  AVL树的性能分析 599
11.8  编程示例:Video Store 600
11.9  快速回顾 608
11.10  练习题 609
11.11  编程练习 612
第12章  图 614
12.1  初识图 614
12.2  图的定义和符号 615
12.3  图的表示方法 617
12.3.1  邻接矩阵 617
12.3.2  邻接表 618
12.4  图的操作 619
12.5  回顾模板 620
12.6  图的ADT定义 620
12.7  图的遍历 624
12.7.1  深度优先遍历 624
12.7.2  广度优先遍历 626
12.8  最短路径算法 628
12.9  最小生成树 634
12.10  拓扑排序 641
12.11  快速回顾 647
12.12  练习题 648
12.13  编程练习 650
第13章  标准模板库(STL)Ⅱ 652
13.1  pair类 652
13.1.1  比较pair类型的对象 654
13.1.2  pair类型和make_pair函数 654
13.2  关联容器 656
13.2.1  关联容器:集合和多重集合 657
13.2.2  关联容器:映射和多重映射 661
13.3  容器、相关头文件和迭代器支持 666
13.4  算法 666
13.5  STL算法分类 667
13.5.1  非修改算法 667
13.5.2  修改算法 667
13.5.3  数值算法 668
13.5.4  堆算法 668
13.5.5  函数对象 669
13.5.6  谓词 674
13.5.7  插入迭代器 674
13.6  STL算法 676
13.6.1  fill 和fill_n函数 676
13.6.2  generate 和generate_n函数 678
13.6.3  find、find_if、find_end和find_first_of函数 679
13.6.4  remove、remove_if、remove_copy和remove_copy_if函数 681
13.6.5  replace、replace_if、replace_copy和replace_copy_if函数 685
13.6.6  swap、iter_swap和swap_ranges函数 687
13.6.7  search、search_n、sort和binary_search函数 690
13.6.8  adjacent_find、merge和inplace_merge函数 694
13.6.9  reverse、reverse_copy、rotate、rotate_copy函数 696
13.6.10  count、count_if、max、max_element、min、min_element和random_shuffle函数 699
13.6.11  for_each和transform函数 702
13.6.12  includes、set_intersection、set_union、set_difference和set_symmetric_ difference
函数 705
13.6.13  accumulate、adjacent_difference、inner_product和partial_sum函数 713
13.7  快速回顾 718
13.8  练习题 720
13.9  编程练习 722
附录A  保留字 724
附录B  运算符优先级 725
附录C  字符集 726
附录D  运算符重载 728
附录E  头文件 729
E.1  头文件cassert 729
E.2  头文件cctype 729
E.3  头文件cmath 730
E.4  头文件cstddef 731
E.5  头文件cstring 731
E.6  头文件string 732
附录F  其他C++主题 734
F.1  继承、指针和虚函数 734
F.2  类和虚析构函数 740
F.3  取地址运算符和类 740
附录G  针对JAVA程序员的C++介绍 744
G.1  数据类型 744
G.2  名称常量、变量以及赋值语句 745
G.3  预处理指令 746
G.4  C++程序 746
G.5  输入和输出 747
G.6  控制结构 756
G.7  命名空间 757
G.8  函数及其参数 761
G.9  数组 765
附录H  参考文献 768
附录I  精选习题答案 769
| 会员登陆
| 最近的浏览历史
清除浏览历史>>
| 相关图书
SAP财务管理大全――21世纪管理信息化前沿SAP系列
C#高级编程(第3版)
MFC Windows 应用程序设计习题解答及上机实验
汇编语言程序设计
Visual Basic程序设计题解与实验指导
C++程序设计实践指导
C++程序设计题解与上机指导
C 语言程序设计案例教程
Visual Basic 程序设计
Visual Basic程序设计题解与实验指导
工作时间 保密安全 订单查询及修改 支付方式 投诉 购物流程
联系我们 售后服务 配送问题 积分与优惠 建议 交易条款
·电话:021-66822880    ·邮箱:    ·客服时间( 周一 至 周六 9:00-18:00 )
Copyright © 新书城 2006-2008 , All Rights Reserved   沪ICP备06028173号