描述
开 本: 16开纸 张: 轻型纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121318870
第1章 绪论 1
1.1 引言 2
1.2 数据结构的发展简史及其在计算机科学中所处的地位 2
1.3 什么是数据结构 2
1.4 基本概念和术语 4
1.5 算法 7
1.5.1 算法的概念 7
1.5.2 算法的特征 8
1.5.3 算法和程序 8
1.5.4 算法的描述 8
1.5.5 算法分析 12
习题1 13
第2章 线性表 14
2.1 线性表的定义及其运算 15
2.1.1 线性表的逻辑结构 15
2.1.2 线性表的抽象数据类型定义 15
2.1.3 线性表的运算 16
2.2 线性表的顺序存储结构 16
2.2.1 顺序表的结构 17
2.2.2 顺序表的基本运算 17
2.3 线性表的链式存储结构 19
2.3.1 单链表结构 20
2.3.2 单链表上的基本运算 21
2.3.3 循环链表结构 25
2.3.4 双向链表结构 26
2.3.5 线性表实现方法的比较 29
习题2 30
第3章 栈和队列 32
3.1 栈 33
3.1.1 栈的定义 33
3.1.2 栈的抽象数据类型描述 33
3.1.3 栈的运算 34
3.1.4 栈的顺序存储结构——顺序栈 34
3.1.5 栈的链式存储结构——链栈 38
3.1.6 栈的应用 39
3.2 队列 45
3.2.1 队列的定义 45
3.2.2 队列的基本运算 46
3.2.3 队列的顺序存储结构——顺序队列 46
3.2.4 链队列 50
3.2.5 队列的应用 52
习题3 52
第4章 串和数组 54
4.1 串的定义及运算 55
4.1.1 基本概念 55
4.1.2 串的运算 55
4.2 串的存储结构 56
4.2.1 顺序存储 56
4.2.2 链式存储 58
4.3 串的基本运算 58
4.4 数组 60
4.4.1 多维数组的概念 60
4.4.2 数组的存储结构 61
4.4.3 特殊矩阵及其压缩存储 62
4.5 稀疏数组 65
4.5.1 稀疏矩阵的三元组表示 65
4.5.2 稀疏矩阵的十字链表表示 66
习题4 68
第5章 树 69
5.1 树的基本概念 70
5.1.1 树的定义 70
5.1.2 基本术语 71
5.1.3 树的表示 72
5.2 树的存储结构 73
5.2.1 多重链表表示法 74
5.2.2 二重链表表示法(孩子兄弟表示法) 74
5.3 二叉树 75
5.3.1 二叉树的定义 75
5.3.2 二叉树的性质 75
5.3.3 二叉树的存储结构 77
5.3.4 二叉树的基本操作 80
5.4 遍历二叉树 82
5.4.1 先序遍历 82
5.4.2 中序遍历 83
5.4.3 后序遍历 83
5.4.4 遍历二叉树的非递归算法 84
5.4.5 遍历算法应用举例 86
5.5 线索二叉树 88
5.5.1 线索的概念 88
5.5.2 线索的分类 89
5.5.3 线索的描述 90
5.6 树和森林 91
5.6.1 树、森林和二叉树的转换 91
5.6.2 树和森林的遍历 94
5.7 二叉树的应用——哈夫曼(Huffman)树 95
5.7.1 基本术语 95
5.7.2 哈夫曼树的定义及构造 95
5.7.3 哈夫曼树的应用 96
习题5 99
第6章 图 101
6.1 图的基本概念 102
6.1.1 图的定义 102
6.1.2 图的相关术语 102
6.2 图的存储结构 105
6.2.1 邻接矩阵 106
6.2.2 邻接表 109
6.3 图的基本运算——遍历 112
6.3.1 深度优先搜索遍历 112
6.3.2 广度优先搜索遍历 115
6.4 生成树和小生成树 116
6.4.1 基本概念 116
6.4.2 普里姆(Prim)算法 118
6.4.3 克鲁斯卡尔(Kruskal)算法 119
6.5 短路径 120
6.5.1 单源点短路径 120
6.5.2 所有顶点对之间的短路径 121
6.6 拓扑排序 125
6.6.1 基本概念 125
6.6.2 拓扑排序的基本方法 126
习题6 127
第7章 查找 128
7.1 查找的基本概念 129
7.2 线性表的查找 130
7.2.1 顺序查找 130
7.2.2 二分查找 131
7.2.3 分块查找 133
7.3 树表查找 135
7.3.1 基于树的查找法——二叉排序树 135
7.3.2 平衡二叉树查找 141
7.3.3 B-树查找 144
7.4 散列查找(Hash) 150
7.4.1 基本概念 150
7.4.2 散列函数的构造 151
7.4.3 解决冲突的方法 152
习题7 154
第8章 排序 156
8.1 排序的基本概念 157
8.2 插入排序 159
8.2.1 直接插入排序 159
8.2.2 希尔排序 160
8.3 交换排序 161
8.3.1 冒泡排序 161
8.3.2 快速排序 162
8.4 选择排序 165
8.4.1 直接选择排序 165
8.4.2 堆排序 166
8.5 归并排序 170
8.6 各种排序方法的综合比较 172
8.6.1 各种内排序方法的比较 173
8.6.2 各种内排序方法的选择 173
习题8 174
习题答案 176
参考文献 188
前 言
数字媒体技术是近年来各高校兴办的新专业,是交叉型、复合型的专业。“数据结构”课程是计算机程序设计的重要理论基础,它是计算机、数字媒体技术等相关专业重要的专业基础课程与核心课程,同时也是其他理工专业的热门选修课。本书是为“数据结构”课程编写的教材,其内容选取符合教学大纲要求,并兼顾不同学科的广度和深度,适用面广。
本书在编写中结合了编著者多年讲授这门课程的教学经验,合理地组织教材内容,做到内容紧凑、叙述深入浅出、图文并茂,并提供了大量的案例介绍。全书共8章:第1章绪论,以非数值计算的程序设计解决实际问题为例,说明什么是数据结构,数据结构的研究内容及相关概念,讨论了如何描述算法及对应的性能分析;第2~4章,主要讨论线性结构,如线性表、栈、队列、串、数组等,研究了各自的逻辑结构、存储结构及相关的数据操作;第5~6章讨论非线性结构,包括树、二叉树和图以及它们的应用;第7、8章讨论程序设计中常见的查找和排序问题,并就典型方法进行了详尽的算法分析和描述,不仅介绍了各种算法的实现,而且着重从时间上进行了定性或定量的分析和比较。
本书内容阐述详尽,文字通俗,简明易懂,算法分析循序渐进富有逻辑性,算法描述清晰准确,理论知识剖析清楚,且注重对难点的阐述,易于学生理解和自学。书中的算法均采用C语言实现,可直接在任何C环境下调试运行。每章后均配有相应的习题并提供参考答案,方便学生自主学习;同时,本书免费提供以教材为基本内容并符合课堂讲授方式的电子课件,这也是编著者在教学中一直使用的教学课件。通过教材的学习,希望达到理解数据结构理论并能运用常用算法解决实际问题的目的。
本书可作为高等院校相关课程的本科或专科教材,是适合应用型人才培养的教材,也可作为科技工作者的参考书,讲授48~80学时。教师根据学时、专业和学生的实际情况,选讲或不讲教材中的某些章节,如第4章的多维数组部分。
本书由舒后编著,参加编写的还有杨潮、何薇、陈如琪、程明智、葛雪姣、熊一帆、简琼、张雅倩、刘华群、齐红心、舒岳、陈红斌、李旸。在编写过程中得到了北京印刷学院数字媒体技术专业同仁的热情帮助,在此表示一并感谢!
本教材配套有教学资源PPT课件,如有需要,请登录电子工业出版社华信教育资源网(www.hxedu.com.cn),注册后免费下载。
由于作者水平所限,加之时间仓促,本书难免有错误和不足之处,希望读者给予指正。
编著者
2017年5月
评论
还没有评论。