《数据结构》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:张晓静主编
  • 出 版 社:北京:海洋出版社
  • 出版年份:2004
  • ISBN:7502760741
  • 页数:278 页
图书介绍:本书为计算机基础专业教材,介绍了线性表、栈、队列、数组、广义表、数和图等数据结构。

1.1 基本术语 1

第1章 绪论 1

1.2 C++语言基础 4

1.2.1 程序结构 4

1.2.2 常用包含文件 6

1.2.3 函数 8

1.2.4 函数名重载 9

1.2.5 运算符重载 9

1.2.6 动态内存分配 10

1.3.2 C++类与对象 11

1.3 抽象数据类型和C++类 11

1.3.1 抽象数据类型 11

1.3.3 模板类 14

1.4 算法和算法分析 16

1.4.1 算法 16

1.4.2 算法设计的要求 16

1.4.3 算法效率的度量 17

1.4.4 空间复杂度 20

习题 20

2.1 线性表的定义和抽象数据类型 23

2.1.1 线性表的定义 23

第2章 线性表 23

2.1.2 线性表的抽象数据类型 24

2.1.3 操作举例 25

2.2 线性表的顺序存储和操作实现 25

2.2.1 线性表的顺序存储表示 25

2.2.2 顺序表操作实现 27

2.2.3 顺序表的应用举例 33

2.3 线性表的链接存储 34

2.3.1 链接存储的概念 34

2.3.2 线性表的链接存储 34

2.3.3 单链表中的结点类型 35

2.3.4 在单链表上的插入和删除操作 36

2.3.5 双向链表中的结点类型和插入与删除操作 37

2.3.6 带表头附加结点的线性链表 38

2.3.7 循环链表 39

2.4 线性表操作在单链表上的实现 39

2.5 线性表操作在双向链表的实现 47

2.6 一元多项式的表示及相加 52

2.6.1 多项式表示 52

2.6.2 多项式相加 52

习题 54

3.1.2 栈的抽象数据类型 57

3.1.1 栈的定义 57

3.1 栈 57

第3章 栈和队列 57

3.1.3 栈的顺序存储结构及其运算实现 58

3.1.4 栈的链接存储及其操作实现 60

3.2 栈的应用举例 62

3.2.1 数制转换 62

3.2.2 括号匹配的检验 63

3.2.3 算术表达式的计算 65

3.3 递归 71

3.3.1 递归的概念 71

3.3.2 递归过程与递归工作栈 72

3.3.3 迷宫问题 74

3.4 队列 77

3.4.1 队列的定义 77

3.4.2 队列的抽象数据类型 77

3.4.3 队列顺序存储及其操作实现 78

3.4.4 队列的链接存储及其操作实现 81

习题 83

第4章 串 87

4.1 串的基本概念 87

4.1.1 串的基本概念 87

4.2.1 定长顺序存储表示 88

4.1.2 串的抽象数据类型定义 88

4.2 串的存储结构 88

4.2.2 堆分配存储表示 89

4.2.3 块链存储表示 89

4.3 串的基本操作 90

4.4 串的模式匹配 91

4.5 串的应用举例——正文编辑 93

习题 94

5.1 数组的定义和存储结构 96

5.1.1 数组的定义 96

第5章 数组和广义表 96

5.1.2 数组的存储结构 97

5.2 特殊矩阵的压缩存储 98

5.2.1 对称矩阵 98

5.2.2 三角矩阵 99

5.2.3 带状矩阵 99

5.3 稀疏矩阵 100

5.3.1 稀疏矩阵的定义 100

5.3.2 稀疏矩阵的存储结构 101

5.3.3 稀疏矩阵的运算 104

5.4.1 广义表的定义 112

5.4 广义表 112

5.4.2 广义表的存储结构 113

5.4.3 广义表的运算 114

习题 118

第6章 树和森林 120

6.1 树的概念 120

6.1.1 树的定义 120

6.1.2 树的表示 121

6.1.3 树的术语 121

6.1.4 树的性质 122

6.2.2 二叉树的性质 123

6.2.1 二叉树的定义 123

6.2 二叉树 123

6.2.3 二叉树的抽象数据类型 125

6.3 二叉树的存储结构 125

6.3.1 数组表示法 126

6.3.2 链表表示法 126

6.3.3 二叉树的二叉链表基本操作实现 128

6.4 二叉树的遍历和线索二叉树 131

6.4.1 二叉树的遍历 131

6.4.2 线索二叉树 134

6.5.1 二叉排序树 140

6.5 二叉树的应用 140

6.5.2 堆 145

6.5.3 哈夫曼树 149

6.6 树和森林 152

6.6.1 树的存储结构 153

6.6.2 树、森林和二叉树的转换 154

6.6.3 树的遍历 156

习题 157

7.1 图的定义和术语 159

7.1.1 图的定义 159

第7章 图 159

7.1.2 图的基本术语 160

7.2 图的存储结构 161

7.2.1 邻接矩阵 161

7.2.2 邻接表 164

7.2.3 边集数组 166

7.3 图的遍历 167

7.3.1 深度优先搜索 168

7.3.2 广度优先搜索 169

7.4 图的生成树和最小生成树 171

7.4.1 普里姆(Prim)算法 172

7.4.2 克鲁斯卡尔(Kruskal)算法 174

7.5 拓扑排序 176

7.6 关键路径 179

7.7 单源最短路径 184

习题 188

第8章 查找 192

8.1 基本概念与术语 192

8.2 静态查找表 194

8.2.1 静态查找表结构 194

8.2.2 顺序查找 194

8.2.3 有序表的折半查找 195

8.2.5 分块查找 199

8.2.4 有序表的插值查找 199

8.3 动态查找表 200

8.3.1 二叉排序树 200

8.3.2 平衡二叉树(AVL树) 200

8.3.3 B-树和B+树 203

8.4 哈希表查找(杂凑法) 209

8.4.1 哈希表与哈希方法 209

8.4.2 常用的哈希函数 210

8.4.3 处理冲突的方法 211

8.4.4 哈希表的查找分析 213

8.4.5 散列表的运算 214

习题 218

第9章 排序 220

9.1 插入排序 220

9.1.1 直接插入排序 220

9.1.2 折半插入排序 222

9.1.3 表插入排序 223

9.1.4 希尔排序(Shell's Sort) 225

9.2 交换排序 227

9.2.1 冒泡排序(Bubble Sort) 227

9.2.2 快速排序 228

9.3.1 简单选择排序 231

9.3 选择排序 231

9.3.2 树形选择排序 232

9.3.3 堆排序(Heap Sort) 233

9.4 二路归并排序 235

9.5 外排序 237

9.5.1 外部排序的方法 237

9.5.2 多路平衡归并的实现 239

习题 240

附录 242

参考书目 278