《数据结构 Java版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:叶核亚编著;陈本林主审
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121261886
  • 页数:328 页
图书介绍:本书全面系统地介绍数据结构的基础理论和算法设计方法,包括线性表、树、图等数据结构以及查找和排序算法。本书采用Java语言以面向对象方法设计并实现了全部的数据结构及算法。本书精选基础理论内容,重点是数据结构设计和算法设计,通过降低理论难度和抽象性,加强实践环节等措施,力求增强学生的理解能力和应用能力。内容涉及的广度和深度符合本科培养目标的要求。

第1章 绪论 1

1.1 数据结构的基本概念 1

1.1.1 为什么要学习数据结构 1

1.1.2 什么是数据结构 1

1.1.3 数据类型与抽象数据类型 5

1.2 算法 8

1.2.1 什么是算法 8

1.2.2 算法分析 9

1.2.3 算法设计 12

习题1 15

实验1算法设计与分析 16

第2章 线性表 17

2.1 线性表抽象数据类型 17

2.2 线性表的顺序存储和实现 18

2.2.1 线性表的顺序存储结构 18

2.2.2 顺序表 18

2.2.3 排序顺序表 29

2.3 线性表的链式存储和实现 37

2.3.1 线性表的链式存储结构 37

2.3.2 单链表 38

2.3.3 双链表 47

2.4 线性表应用:多项式的表示及运算 51

2.4.1 一元多项式的表示及运算 52

2.4.2 二元多项式的表示及运算 56

习题2 58

实验2线性表的基本操作 58

第3章 串 61

3.1 串抽象数据类型 61

3.2 串的存储和实现 62

3.2.1 串的存储结构 62

3.2.2 常量字符串类 63

3.2.3 变量字符串类 71

3.3 串的模式匹配 74

3.3.1 Brute-Force算法 74

3.3.2 模式匹配应用 76

3.3.3 KMP算法 79

习题3 85

实验3串的基本操作及模式匹配算法 85

第4章 栈和队列 89

4.1 栈 89

4.1.1 栈抽象数据类型 89

4.1.2 顺序栈 90

4.1.3 链式栈 90

4.1.4 栈的应用 91

4.2 队列 97

4.2.1 队列抽象数据类型 97

4.2.2 顺序队列 98

4.2.3 链式队列 100

4.2.4 队列的应用 102

4.2.5 优先队列 103

4.3 递归 105

习题4 110

实验4栈和队列以及递归算法 111

第5章 数组和广义表 113

5.1 数组 113

5.2 特殊矩阵的压缩存储 118

5.2.1 二角矩阵、对称矩阵和对角矩阵的压缩存储 118

5.2.2 稀疏矩阵的压缩存储 120

5.3 广义表 127

5.3.1 广义表抽象数据类型 127

5.3.2 广义表的存储结构 129

5.3.3 广义表双链表示的实现 131

习题5 134

实验5特殊矩阵和广义表的存储和运算 135

第6章 树和二叉树 137

6.1 树及其抽象数据类型 137

6.1.1 树定义 137

6.1.2 树的术语 138

6.1.3 树抽象数据类型 139

6.2 二叉树 139

6.2.1 二叉树定义 139

6.2.2 二叉树性质 140

6.2.3 二叉树的遍历规则 141

6.2.4 二叉树抽象数据类型 142

6.2.5 二叉树的存储结构 142

6.2.6 二叉树的二叉链表实现 144

6.3 线索二叉树 158

6.3.1 线索二叉树定义 159

6.3.2 中序线索二叉树 160

6.4 Huffman树 163

6.4.1 Huffman编码 163

6.4.2 Huffman树及其构造算法 164

6.5 树的表示和实现 171

6.5.1 树的遍历规则 171

6.5.2 树的存储结构 171

6.5.3 树的父母孩子兄弟链表实现 172

习题6 175

实验6树和二叉树的基本操作 177

第7章 图 180

7.1 图及其抽象数据类型 180

7.1.1 图的基本概念 180

7.1.2 图抽象数据类型 183

7.2 图的表示和实现 184

7.2.1 图的邻接矩阵表示和实现 184

7.2.2 图的邻接表表示和实现 191

7.2.3 图的邻接多重表表示 196

7.3 图的遍历 197

7.3.1 图的深度优先搜索遍历 197

7.3.2 图的广度优先搜索遍历 200

7.4 最小生成树 201

7.4.1 生成树 201

7.4.2 最小生成树的构造算法 203

7.5 最短路径 206

7.5.1 单源最短路径 207

7.5.2 每对顶点间的最短路径 210

习题7 214

实验7图的表示和操作 215

第8章 查找 216

8.1 查找的基本概念 216

8.2 二分法查找 218

8.3 基于索引表的分块查找 220

8.4 散列 224

8.4.1 散列表 224

8.4.2 散列映射 230

8.5 二叉排序树和平衡叉树 233

8.5.1 二叉排序树 234

8.5.2 树映射 241

8.5.3 平衡二叉树 242

习题8 245

实验8查找算法 247

第9章 排序 248

9.1 插入排序 248

9.1.1 直接插入排序 248

9.1.2 希尔排序 250

9.2 交换排序 251

9.2.1 冒泡排序 252

9.2.2 快速排序 253

9.3 选择排序 256

9.3.1 直接选择排序 256

9.3.2 堆排序 257

9.4 归并排序 260

9.5 线性表的排序算法 262

9.5.1 顺序表的排序算法 262

9.5.2 单链表的排序算法 263

9.5.3 循环双链表的排序算法 264

习题9 267

实验9排序算法设计及分析 267

第10章 综合应用设计 269

10.1 JAVA集合框架 269

10.1.1 Comparator比较器接口 269

10.1.2 Arrays数组类 269

10.1.3 集合 270

10.1.4 映射 276

10.2 实现迭代器 277

10.2.1 提供迭代器的类 277

10.2.2 基于迭代器的操作 280

10.3 算法设计策略 281

10.3.1 分治法 282

10.3.2 动态规划法 283

10.3.3 贪心法 285

10.3.4 回溯法 295

10.4 课程设计的目的、要求和选题 309

附录A ASCII字符与Unicode值 316

附录B Java关键字 317

附录C Java基本数据类型 319

附录D Java运算符及其优先级 320

附录E Java类库(部分) 321

E.1 java.lang语言包 321

E.2 java.util实用包 324

附录F MyEclipse常用菜单命令 326

参考文献 328