《数据结构(Java版 第4版)》是“十二五”普通高等教育本科国家级规划教材。
《数据结构(Java版 第4版)》全面系统地介绍数据结构的基础理论和算法设计方法,包括线性表、树、图等数据结构以及查找和排序算法。《数据结构(Java版 第4版)》采用Java语言以面向对象方法设计并实现了全部的数据结构及算法。《数据结构(Java版 第4版)》精选基础理论内容,重点是数据结构设计和算法设计,通过降低理论难度和抽象性、加强实践环节等措施,力求增强学生的理解能力和应用能力。《数据结构(Java版 第4版)》内容涉及的广度和深度符合本科培养目标的要求,配套教学资源丰富。
《数据结构(Java版 第4版)》可作为普通高等学校计算机及相近专业本科的数据结构课程教材,也可作为从事计算机软件开发和工程应用人员的参考书。
目录
- 第1章 绪论
- 1.1 数据结构的基本概念
- 1.1.1 为什么要学习数据结构
- 1.1.2 什么是数据结构
- 1.1.3 数据类型与抽象数据类型
- 1.2 算法
- 1.2.1 什么是算法
- 1.2.2 算法分析
- 1.2.3 算法设计
- 习题
- 实验1 算法设计与分析
- 第2章 线性表
- 2.1 线性表抽象数据类型
- 2.2 线性表的顺序存储和实现
- 2.2.1 线性表的顺序存储结构
- 2.2.2 顺序表
- 2.2.3 排序顺序表
- 2.3 线性表的链式存储和实现
- 2.3.1 线性表的链式存储结构
- 2.3.2 单链表
- 2.3.3 双链表
- 2.4 线性表应用:多项式的表示及运算
- 2.4.1 一元多项式的表示及运算
- 2.4.2 二元多项式的表示及运算
- 习题
- 实验2 线性表的基本操作
- 第3章 串
- 3.1 串抽象数据类型
- 3.2 串的存储和实现
- 3.2.1 串的存储结构
- 3.2.2 常量字符串类
- 3.2.3 变量字符串类
- 3.3 串的模式匹配
- 3.3.1 Brute-Force算法
- 3.3.2 模式匹配应用
- 3.3.3 KMP算法
- 习题
- 实验3 串的基本操作及模式匹配算法
- 第4章 栈和队列
- 4.1 栈
- 4.1.1 栈抽象数据类型
- 4.1.2 顺序栈
- 4.1.3 链式栈
- 4.1.4 栈的应用
- 4.2 队列
- 4.2.1 队列抽象数据类型
- 4.2.2 顺序队列
- 4.2.3 链式队列
- 4.2.4 队列的应用
- 4.2.5 优先队列
- 4.3 递归
- 习题
- 实验4 栈和队列以及递归算法
- 第5章 数组和广义表
- 5.1 数组
- 5.2 特殊矩阵的压缩存储
- 5.2.1 三角矩阵、对称矩阵和对角矩阵的压缩存储
- 5.2.2 稀疏矩阵的压缩存储
- 5.3 广义表
- 5.3.1 广义表抽象数据类型
- 5.3.2 广义表的存储结构
- 5.3.3 广义表双链表示的实现
- 习题
- 实验5 特殊矩阵和广义表的存储和运算
- 第6章 树和二叉树
- 6.1 树及其抽象数据类型
- 6.1.1 树定义
- 6.1.2 树的术语
- 6.1.3 树抽象数据类型
- 6.2 二叉树
- 6.2.1 二叉树定义
- 6.2.2 二叉树性质
- 6.2.3 二叉树的遍历规则
- 6.2.4 二叉树抽象数据类型
- 6.2.5 二叉树的存储结构
- 6.2.6 二叉树的二叉链表实现
- 6.3 线索二叉树
- 6.3.1 线索二叉树定义
- 6.3.2 中序线索二叉树
- 6.4 Huffman树
- 6.4.1 Huffman编码
- 6.4.2 Huffman树及其构造算法
- 6.5 树的表示和实现
- 6.5.1 树的遍历规则
- 6.5.2 树的存储结构
- 6.5.3 树的父母孩子兄弟链表实现
- 习题
- 实验6 树和二叉树的基本操作
- 第7章 图
- 7.1 图及其抽象数据类型
- 7.1.1 图的基本概念
- 7.1.2 图抽象数据类型
- 7.2 图的表示和实现
- 7.2.1 图的邻接矩阵表示和实现
- 7.2.2 图的邻接表表示和实现
- 7.2.3 图的邻接多重表表示
- 7.3 图的遍历
- 7.3.1 图的深度优先搜索遍历
- 7.3.2 图的广度优先搜索遍历
- 7.4 最小生成树
- 7.4.1 生成树
- 7.4.2 最小生成树的构造算法
- 7.5 最短路径
- 7.5.1 单源最短路径
- 7.5.2 每对顶点间的最短路径
- 习题
- 实验7 图的表示和操作
- 第8章 查找
- 8.1 查找的基本概念
- 8.2 二分法查找
- 8.3 基于索引表的分块查找
- 8.4 散列
- 8.4.1 散列表
- 8.4.2 散列映射
- 8.5 二叉排序树和平衡二叉树
- 8.5.1 二叉排序树
- 8.5.2 树映射
- 8.5.3 平衡二叉树
- 习题
- 实验8 查找算法
- 第9章 排序
- 9.1 插入排序
- 9.1.1 直接插入排序
- 9.1.2 希尔排序
- 9.2 交换排序
- 9.2.1 冒泡排序
- 9.2.2 快速排序
- 9.3 选择排序
- 9.3.1 直接选择排序
- 9.3.2 堆排序
- 9.4 归并排序
- 9.5 线性表的排序算法
- 9.5.1 顺序表的排序算法
- 9.5.2 单链表的排序算法
- 9.5.3 循环双链表的排序算法
- 习题
- 实验9 排序算法设计及分析
- 第10章 综合应用设计
- 10.1 JAVA集合框架
- 10.1.1 Comparator比较器接口
- 10.1.2 Arrays数组类
- 10.1.3 集合
- 10.1.4 映射
- 10.2 实现迭代器
- 10.2.1 提供迭代器的类
- 10.2.2 基于迭代器的操作
- 10.3 算法设计策略
- 10.3.1 分治法
- 10.3.2 动态规划法
- 10.3.3 贪心法
- 10.3.4 回溯法
- 10.4 课程设计的目的、要求和选题
- 附录A ASCII字符与Unicode值
- 附录B Java关键字
- 附录C Java基本数据类型
- 附录D Java运算符及其优先级
- 附录E Java类库(部分)
- E.1 java.lang语言包
- E.2 java.util实用包
- 附录F MyEclipse常用菜单命令
- 参考文献