本书重点培养高职高专院校计算机及相关专业学生应具备的数据结构应用能力。理论知识部分以够用为主,强调理论和实践紧密结合,重点突出实践和实用性。每章均由实例引入,体现了“以就业为导向”的职业教育理念;采用“以应用实例巩固理论知识”的内容编排结构,突出了“以技能培养为目标”的职业教育思想。 本书适合作为高职高专院校计算机及相关专业“数据结构”课程的教材。
本书共分10章,重点介绍3种基本数据结构及其应用,主要内容包括绪 论、Java语言基础知识、线性表、栈和队列、数组和广义表、串、树与二叉 树、图、查找和排序等。本书采用Java语言描述数据结构中的算法,每章配 有一定数量的具有完整程序的实例,并在*后提供难易适中、与所讲理论知 识相配套的习题,帮助读者学习和理解理论知识。
目录
- **章 绪论
- 1.1 数据结构的3种基本结构
- 1.1.1 线性结构
- 1.1.2 层次结构
- 1.1.3 网状结构
- 1.2 数据结构研究的主要问题
- 1.3 算法及描述
- 1.3.1 算法与算法特性
- 1.3.2 算法表示
- 1.4 算法效率分析
- 习题
- 第2章 Java语言基础知识
- 2.1 实例引入
- 2.2 Java语言概述
- 2.3 面向对象程序设计简述
- 2.3.1 面向对象程序设计的基本概念
- 2.3.2 面向对象程序设计的基本特征
- 2.4 Java语言基础知识
- 2.4.1 数据类型
- 2.4.2 运算符
- 2.4.3 流程控制
- 2.4.4 数组
- 2.4.5 类与对象
- 2.4.6 类的封装性
- 2.4.7 类的继承性
- 2.4.8 类的多态性
- 2.4.9 抽象类和内部类
- 2.4.10 接口
- 2.4.11 包
- 2.4.12 异常处理
- 2.4.13 Java标准数据流
- 2.5 Java语言中的“指针”实现
- 2.6 JDK1.5新增特性
- 2.6.1 泛型
- 2.6.2 增强的集合遍历结构
- 2.6.3 自动装箱/拆箱
- 2.6.4 枚举类型
- 2.6.5 静态import
- 2.6.6 从终端读取数据
- 2.6.7 格式化输出
- 2.6.8 可变参数
- 习题
- 第3章 线性表
- 3.1 实例引入
- 3.2 线性表的概述
- 3.2.1 线性表的概念
- 3.2.2 线性表的存储结构及操作
- 3.3 顺序表的基本操作及实现
- 3.3.1 顺序表的概述
- 3.3.2 顺序表的基本操作及实现
- 3.4 链表的基本操作及实现
- 3.4.1 链表
- 3.4.2 链表的分类
- 3.4.3 单链表的基本运算及实现
- 3.4.4 其他形式的链表的相关运算
- 3.4.5 算法实例
- 3.5 线性表的应用
- 3.5.1 顺序表的连接
- 3.5.2 字符串的逆转算法
- 习题
- 第4章 栈和队列
- 4.1 实例引入
- 4.2 栈的相关概述
- 4.2.1 栈的定义
- 4.2.2 栈的相关概念
- 4.2.3 栈的操作过程
- 4.2.4 栈的存储结构
- 4.3 用数组实现顺序栈及操作
- 4.4 用类实现链式栈及相应操作
- 4.5 队列的相关概述
- 4.5.1 队列的定义
- 4.5.2 队列的相关概念
- 4.5.3 队列的存储结构
- 4.6 用数组实现顺序队列及相应操作
- 4.7 用类实现链队列及相应操作
- 4.8 栈和队列的实例应用
- 习题
- 第5章 数组和广义表
- 5.1 实例引入
- 5.2 数组
- 5.2.1 数组的基本概念
- 5.2.2 一维数组
- 5.2.3 二维数组
- 5.3 特殊矩阵
- 5.3.1 对称矩阵
- 5.3.2 三角矩阵
- 5.3.3 对角矩阵
- 5.4 稀疏矩阵
- 5.5 广义表
- 5.5.1 广义表的概念
- 5.5.2 广义表的存储结构
- 习题
- 第6章 串
- 6.1 实例引入
- 6.2 串的概述
- 6.3 串的顺序存储结构
- 6.3.1 通过String类处理串
- 6.3.2 通过StringBuffer类处理串
- 6.4 串的链式存储结构
- 6.4.1 链串的实现
- 6.4.2 链串基本算法
- 习题
- 第7章 树与二叉树
- 7.1 实例引入
- 7.2 树
- 7.2.1 树的定义
- 7.2.2 树的表示方法
- 7.2.3 树的抽象数据类型
- 7.2.4 树的存储结构
- 7.3 二叉树
- 7.3.1 二叉树的定义
- 7.3.2 二叉树的性质
- 7.3.3 二叉树的抽象数据类型
- 7.3.4 二叉树的存储结构
- 7.4 二叉树的节点类及二叉树类
- 7.4.1 二叉树节点类
- 7.4.2 二叉树类
- 7.5 二叉树的遍历
- 7.5.1 二叉树遍历算法
- 7.5.2 二叉树遍历算法的实现
- 7.5.3 非递归的二叉树遍历算法
- 7.5.4 二叉树遍历的应用
- 7.6 线索二叉树
- 7.6.1 线索二叉树的定义
- 7.6.2 线索二叉树的存储结构
- 7.6.3 遍历线索二叉树
- 7.6.4 构造中序线索二叉树
- 7.7 树和森林
- 7.7.1 树、森林与二叉树的转换
- 7.7.2 树和森林的遍历
- 7.8 树的应用
- 7.8.1 二叉排序树
- 7.8.2 哈夫曼树和哈夫曼编码
- 7.8.3 判定树
- 习题
- 第8章 图
- 8.1 实例引入
- 8.2 图的基本概念
- 8.2.1 图的定义
- 8.2.2 图的相关概念
- 8.3 图的存储结构
- 8.3.1 邻接矩阵
- 8.3.2 邻接表
- 8.4 图的遍历
- 8.4.1 深度优先搜索遍历
- 8.4.2 广度优先搜索遍历
- 8.5 生成树和*小生成树
- 8.5.1 生成树
- 8.5.2 Kruskal算法
- 8.5.3 Prim算法
- 8.6 *短路径问题
- 8.7 拓扑排序
- 8.7.1 有向无环图
- 8.7.2 拓扑排序
- 8.8 AOE网与关键路径
- 8.8.1 AOE网
- 8.8.2 关键路径
- 8.9 综合示例
- 习题
- 第9章 查找
- 9.1 实例引入
- 9.2 基本概念与术语
- 9.2.1 查找的概念
- 9.2.2 查找方法
- 9.3 顺序查找法
- 9.4 折半查找法
- 9.5 二叉排序树法
- 9.6 哈希查找法
- 9.6.1 哈希查找概念
- 9.6.2 哈希函数
- 9.6.3 冲突解决方法
- 9.7 应用实例
- 习题
- **0章 排序
- 10.1 实例引入
- 10.2 排序的概念
- 10.3 排序的分类
- 10.3.1 按照存储交换分类
- 10.3.2 按照内部排序的过程分类
- 10.3.3 按照排序的稳定性分类
- 10.4 插入排序
- 10.4.1 直接插入排序
- 10.4.2 希尔排序
- 10.5 交换排序
- 10.5.1 冒泡排序
- 10.5.2 快速排序
- 10.6 选择排序
- 10.6.1 直接选择排序
- 10.6.2 堆排序
- 10.7 其他排序
- 10.7.1 归并排序
- 10.7.2 基数排序
- 10.8 排序的工程应用举例
- 习题
- 参考文献