计算机系列教材数据结构与算法分析(C++实现)/张千帆 莫嘉铭 王翀
- ISBN:9787302564379
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:360
- 出版时间:2020-12-01
- 条形码:9787302564379 ; 978-7-302-56437-9
本书特色
数据结构研究计算机系统内表示、组织、处理和储存数据的方式,算法则着重于程序处理流程的优化,二者相辅相成,共同提高程序的时间与空间效率。数据结构课程已成为高等院校计算机科学与技术、信息管理与信息系统等专业的核心专业课程,并有越来越多的专业及相关技术人员对数据结构知识提出了更高的的需求。本书的主要特点:(1) 参照数据结构普遍的分类规范进行内容编排,涵盖了一般需要掌握的所有基础数据结构与算法,并对算法的效率进行对比分析。 (2) 实例引入和图文讲解展现了将实际问题转换为抽象的数据结构的方法并设计相应的算法。 (3) 基于C++语言面向对象的概念和对象类设计原则进行算法实现,体现了面向对象的三大特点——封装、继承、多态,利用封装实现其独立的原理特点,利用继承实现各个数据结构之间的关联,利用多态展现数据结构在实际问题中的调用方法。附录二中涵盖了各个C++类对应的UML类图,可从中清晰地看到每个类中的属性与方法,以及各个类之间的关系。 (4) 为了满足教学过程中读者的上机练习需求,书中的所有算法实现均可以通过直接编译运行,附上了相应的算例和运行结果,便于读者对比实现。同时采用.h头文件与.cpp定义文件分离的方式进行算法实现,避免对数据结构的重复定义,引用位置也在附录一的文件夹结构中详细展示。 (5) 原则上建议读者将书中的数据结构进行自主实现,但同时本书也介绍了几种基础数据结构对应的标准模板库(STL)里的容器,若读者时间不足,可以在了解后直接使用现有组件。 (6) 每一章*后通过扫描二维码获得匹配的思考和练习题,包含概念理解、算法拓展、解决实际问题等题型;同时参考答案里附上了每个问题的解题思路、可执行的C++代码及运行结果供读者参考。 本书内容丰富,结构合理,实用性强,配有电子课件、完整的程序源代码、习题参考答案等教学资源。 所有算法都提供完整可执行的C++程序。问题导向,重视应用。书*后给出一个综合案例分析,综合运用多种数据结构和算法,强化实践与应用。教学资源配套齐全。
内容简介
本书按照循序渐进的原则介绍线性表、栈、队列、串、树、图等数据结构的逻辑结构、存储结构和数据运算,对于经典算法使用C++构造可执行的程序,帮助读者利用很少的时间和空间资源编写出很很好很合理的程序。本书可以作为高等院校信息管理与信息系统专业、软件专业、计算机专业的本科教材,也可以作为其他理工科专业的选修教材。教师可以根据本学校的专业特点、学生情况和教学学时,选讲部分章节的内容。
目录
目录
第1章绪论1
1.1数据结构与程序设计1
1.1.1学习数据结构的意义1
1.1.2数据与数据结构2
1.1.3数据结构的类型4
1.2抽象数据类型5
1.2.1C++中的数据类型6
1.2.2抽象数据类型与C++特性6
1.3算法分析10
1.3.1问题、算法与程序10
1.3.2算法效率的度量10
本章小结14
第2章线性表15
2.1线性表的基本概念15
2.1.1线性表的定义与特点15
2.1.2线性表的存储结构15
2.2顺序表的算法实现17
2.2.1顺序表的创建和插入19
2.2.2顺序表内结点的查找23
2.2.3顺序表内元素的删除28
2.3单链表的算法实现30
2.3.1单链表的结点结构和一般形式30
2.3.2单链表的创建和插入32
2.3.3单链表内数据元素的查找37
2.3.4单链表内数据元素的删除40
2.3.5单链表的合并43
2.4双向链表的算法实现47
2.4.1双向链表的结点结构和一般形式47
2.4.2双向链表的创建和插入49
2.4.3双向链表内元素的查找53
2.4.4双向链表内元素的删除55
2.5循环链表的算法实现57
2.5.1循环链表的结点结构和一般形式57
2.5.2循环链表的创建58
2.6线性表的应用——一元多项式的存储和相加63
2.6.1一元多项式的存储和相加的实现方式63
2.6.2一元多项式的存储和相加的实现65
2.7STL的使用68
2.7.1STL简介68
2.7.2STL应用实例68
本章小结69
第3章栈与队列71
3.1栈的基本概念71
3.1.1栈的定义与特点71
3.1.2栈的两类存储结构71
3.2顺序栈的算法实现72
3.2.1顺序栈的建立和顺序栈入栈72
3.2.2顺序栈出栈74
3.3队列的基本概念76
3.3.1队列的定义与特点76
3.3.2队列的存储结构77
3.4顺序队列的算法实现78
3.4.1顺序队列的建立和顺序队列入队79
3.4.2顺序队列出队80
3.5循环队列的算法实现83
3.5.1循环队列的建立和循环队列入队83
3.5.2循环队列出队85
3.6链队列的算法实现87
3.6.1链队列的建立和链队列入队87
3.6.2链队列出队88
3.7栈和队列的应用——算术表达式的转化和求值89
本章小结96
第4章串97
4.1串的基本概念97
4.1.1串的定义与特点97
4.1.2串的存储结构98
4.2串的算法实现100
4.2.1串赋值算法100
4.2.2求子串算法102
4.2.3串比较算法104
4.2.4串连接算法106
4.3串的模式匹配算法实现107
4.3.1串的朴素模式匹配算法107
4.3.2改进的模式匹配算法109
本章小结114
第5章数组和广义表115
5.1数组的基本概念115
5.1.1数组的定义与特点115
5.1.2数组的存储结构116
5.2特殊矩阵的压缩存储117
5.3矩阵的算法实现120
5.4广义表的基本概念126
5.4.1广义表的定义与图形表示126
5.4.2广义表的存储结构127
5.5广义表的算法实现128
本章小结134
第6章树和二叉树135
6.1树的基本概念135
6.1.1树的定义与基本术语135
6.1.2树的表示形式和存储结构136
6.2二叉树的基本概念140
6.2.1二叉树的定义与性质140
6.2.2二叉树的存储结构142
6.2.3树、森林和二叉树的转换144
6.2.4二叉树的遍历146
6.3二叉树算法实现147
6.3.1二叉树的建立147
6.3.2递归的二叉树前序遍历、中序遍历、后序遍历150
6.3.3非递归的二叉树前序遍历153
6.3.4非递归的二叉树中序遍历155
6.3.5非递归的二叉树后序遍历157
6.4哈夫曼树及其应用161
6.4.1哈夫曼树与哈夫曼编码161
6.4.2哈夫曼算法实现162
本章小结168
第7章图169
7.1图的基本概念169
7.1.1图的定义和术语169
7.1.2图的表示与存储结构173
7.2图的构造算法实现176
7.2.1图的基本类定义176
7.2.2构造顺序表存储的图179
7.2.3构造邻接表存储的无向图与有向图182
7.2.4构造十字链表存储的有向图188
7.2.5构造邻接多重表存储的无向图193
7.3图的遍历算法实现197
7.3.1深度优先遍历算法198
7.3.2广度优先遍历算法200
7.4*小生成树算法实现204
7.4.1普里姆算法205
7.4.2克鲁斯卡尔算法209
7.5图的应用216
7.5.1拓扑排序216
7.5.2关键路径220
7.5.3*短路径——迪杰斯克拉算法225
7.5.4*短路径——弗洛伊德算法229
本章小结234
第8章查找235
8.1查找的基本概念235
8.1.1查找的相关术语235
8.1.2查找表结构236
8.2顺序表查找算法实现236
8.3有序顺序表的折半查找算法实现240
8.4索引顺序表的分块查找算法实现245
8.4.1索引表245
8.4.2分块查找算法实现246
8.5二叉排序树及其算法实现250
8.5.1二叉排序树及其查找过程250
8.5.2二叉排序树建立及插入结点的过程251
8.5.3二叉排序树删除结点的过程251
8.5.4二叉排序树的算法实现253
8.6平衡二叉树及其算法实现258
8.6.1平衡二叉排序树及其构造258
8.6.2平衡二叉排序树算法实现261
8.7B树及其算法实现268
8.7.1B树268
8.7.2B树的查找269
8.7.3B树的插入269
8.7.4B树的删除271
8.7.5B树的算法实现273
8.8哈希查找的算法实现282
8.8.1哈希表282
8.8.2哈希函数的构造方法282
8.8.3哈希冲突的处理方法283
8.8.4哈希表的算法实现285
本章小结289
第9章排序290
9.1排序的基本概念290
9.1.1排序相关术语介绍290
9.1.2常用的内部排序算法类型简介291
9.2插入排序的算法实现292
9.2.1直接插入排序292
9.2.2希尔排序295
9.3交换排序的算法实现299
9.4选择排序的算法实现303
9.4.1直接选择排序303
9.4.2堆排序306
9.5归并排序的算法实现313
9.6基数排序的算法实现316
9.7各种内部排序方法的比较321
9.7.1时间性能321
9.7.2空间性能321
9.7.3排序方法的稳定性322
9.8外部排序322
本章小结322
第10章综合案例323
10.1背景介绍323
10.2问题分解323
10.2.1旅行商问题323
10.2.2动态规划325
10.2.3带酒店选择的旅行商问题328
10.3总结与思考331
附录A文件夹结构332
附录BUML类图334
B.1第2章线性表的相关类图334
B.2第3章栈与队列的相关类图336
B.3第4章串的相关类图337
B.4第5章数组和广义表的相关类图338
B.5第6章树和二叉树的相关类图339
B.6第7章图的相关类图341
B.7第8章查找的相关类图344
B.8第9章排序的相关类图346
参考文献347
作者简介
张千帆,基金委A类期刊外审专家,中国建筑第三工程局有限公司企业管理咨询顾问。2017年获得华中科技大学优秀教职工,2016年获得湖北省大学生暑期社会实践先进工作者、2011年获得湖北省教育系统先进女教职工、2012年和2007年获得华中科技大学教学质量一等奖、2007年获得华中科技大学教学竞赛一等奖。 1992-1996年就读于华中科技大学(原华中理工大学)信息管理与信息系统专业,1996年获得工学学士学位,1999年于华中科技大学管理学院获得管理科学与工程硕士学位,2003年于华中科技大学管理学院获得管理科学与工程博士学位,2005年于华中科技大学自动控制系博士后出站。1999年毕业留校任教至今,一直工作在教学一线,具有扎实的学术功底和突出的教学能力,独立主讲本科生和研究生课程,其中主讲4门本科生课程《数据结构》、《管理信息系统》、《《数据库技术及应用》、管理统计学》。作为本科“数据结构”课程组组长和MBA“互联网环境中的组织管理”课程组组长,坚持组织新课开设和课程研讨。 主持“信息管理专业边界再设计研究”和“大型实践教学模式与管理类本科实验教学中心建设研究”湖北教改项目2项。
-
落洼物语
¥8.7¥28.0 -
当代中国政府与政治(新编21世纪公共管理系列教材)
¥32.6¥48.0 -
中国当代文学名篇选读
¥19.1¥53.0 -
中医基础理论
¥50.7¥59.0 -
北大人文课(平装)
¥13.9¥45.0 -
外国教育史-第2版
¥24.4¥40.0 -
宪法-第二版
¥12.2¥29.0 -
先进防伪技术
¥81.3¥98.0 -
当代中国政府与政治 第二版
¥57.8¥68.0 -
EPLAN电气设计
¥29.9¥39.8 -
闯进数学世界――探秘历史名题
¥21.3¥32.8 -
企业法务教程
¥34.8¥49.0 -
习近平新时代中国特色社会主义思想概论
¥18.2¥26.0 -
毛泽东思想和中国特色社会主义理论体系概论(2021年版)
¥6.8¥25.0 -
金融学
¥29.9¥49.0 -
计算机操作系统教程(第4版)(清华大学计算机系列教材)
¥31.9¥49.0 -
古代汉语(第四册)
¥16.1¥35.0 -
管理学:原理与方法(第7版)(博学.大学管理类)/周三多
¥30.9¥49.0 -
(平装)北大必修课:北大口才课
¥12.2¥45.0 -
海商法-第四版
¥30.2¥48.0