内容推荐 本书简要回顾了Java语言的类、接口、泛型、数组等基本概念。在此基础上,介绍了算法分析的基本方法和数据结构的基本概念,全面系统地讨论了线性表、栈、队列、二叉树等基本数据结构的实现技术以及如何使用这些基本数据结构实现优先级队列和图等数据结构,给出了解决查找和排序两个经典问题所使用的二叉搜索树、红黑树、B树、哈希表等数据结构的设计和实现。 本书使用Java语言,采用泛型编程实现数据结构,对代码进行了详细的讲解。本书配套资源中的project给出了各数据结构的完整代码。 本书可作为普通高等学校计算机科学与技术、软件工程、人工智能、数据科学与大数据技术等专业的“数据结构”课程的教材,也可作为工程技术人员的参考读物。 目录 基础篇 第1章 Java语言回顾 1.1 类 1.1.1 类与对象 1.1.2 类的扩展 1.1.3 嵌套类 1.2 接口 1.2.1 接口的实现 1.2.2 接口的扩展 1.2.3 常用的接口 1.3 异常处理和常用的异常类 1.4 泛型 1.4.1 泛型类 1.4.2 参数化类及其成员 1.4.3 泛型类的静态成员 1.4.4 泛型接口和参数化接口 1.4.5 泛型方法 1.4.6 通配符、带通配符的参数化类型和捕获转型 1.4.7 参数化类型之间的子类型/超类型关系 1.4.8 类型擦除、Raw类型及其成员 1.4.9 泛型的实现 1.4.10 具体化(Reifiable)类型和new表达式的语法 1.5 数组 1.5.1 泛型无关的数组 1.5.2 泛型相关的数组 1.6 引用类型的转型 1.6.1 宽化转型和窄化转型 1.6.2 unchecked窄化转型 小结 习题 第2章 算法与算法分析 2.1 算法 2.2 算法分析 2.2.1 时间复杂度模型 2.2.2 渐进时间复杂度分析 2.2.3 空间复杂度模型及分析 2.3 程序性能测量 小结 习题 第3章 数据结构 3.1 数据结构的基本概念 3.2 数据结构的描述 3.3 抽象数据类型及实现 小结 习题 数据结构篇 第4章 线性表 4.1 线性表的基本概念 4.2 线性表的数组描述 4.3 线性表的链式描述 4.3.1 单向链表 4.3.2 带头结点的单向链表 4.3.3 单向循环链表 4.3.4 双向链表 4.3.5 链表的例题 4.4 数组描述和链式描述的比较 小结 习题 第5章 栈与队列 5.1 栈 5.1.1 栈的数组描述 5.1.2 栈的链式描述 5.2 队列 5.2.1 队列的数组描述 5.2.2 队列的链式描述 5.3 双端队列 5.3.1 双端队列的数组描述 5.3.2 双端队列的链式描述 小结 习题 第6章 树与二叉树 6.1 树 6.2 二叉树 6.3 二叉树的性质 6.4 二叉树的实现 6.4.1 二叉树的数组描述 6.4.2 二叉树的链式描述 6.5 二叉树的常用操作 6.5.1 二叉树的遍历 6.5.2 二叉树的其他常用操作 6.6 树的遍历 6.7 树的描述 小结 习题 综合运用篇 第7章 查找 7.1 基本概念 7.2 静态查找 7.3 动态查找 7.4 二叉搜索树 7.4.1 二叉搜索树的操作 7.4.2 二叉搜索树的实现 7.4.3 二叉搜索树的性能分析 7.5 AVL树 7.6 红黑树 7.6.1 自底向上的平衡操作 7.6.2 自顶向下的平衡操作 7.7 B树 7.8 哈希表 7.8.1 哈希函数及冲突检测 7.8.2 基于分离链的哈希表的实现 小结 习题 第8章 优先级队列 8.1 基本概念 8.2 堆 8.3 优先级队列的实现 8.4 最优二叉树 8.4.1 哈夫曼算法 8.4.2 哈夫曼算法的实现 8.4.3 哈夫曼编码的实现 8.5 偶堆 小结 习题 第9章 排序 9.1 基本概念 9.2 直接插入排序 9.3 快速排序 9.3.1 单枢轴快速排序 9.3.2 双枢轴快速排序 9.4 堆排序 9.5 归并排序 9.5.1 直接归并排序 9.5.2 自然归并排序 9.6 基数排序 9.7 计数排序 小结 习题 第10章 图 10.1 图的基本概念 10.2 图的描述 10.2.1 邻接矩阵 10.2.2 邻接表 10.3 图的实现 10.3.1 基于邻接矩阵的有向图的实现 10.3.2 基于邻接表的有向图的实现 10.3.3 基于邻接矩阵的带权有向图的实现 10.3.4 基于邻接表的带权有向图的实现 10.3.5 基于邻接矩阵的无向图的实现 10.4 图的搜索与应用 10.4.1 广度优先搜索 10.4.2 深度优先搜索 10.4.3 连通图及其连通分量 10.4.4 边数最少的路径 10.4.5 简单路径 10.4.6 拓扑排序 10.5 最短路径 10.5.1 Bellman-Ford算法 10.5.2 支持decrease操作的优先级队列 10.5.3 Dijkstra算法 10.6 最小生成树 10.6.1 Prim算法 10.6.2 不相交集合 10.6.3 Kruskal算法 10.7 图的其他描述 10.7.1 十字链表 10.7.2 邻接多重表 小结 习题 参考文献 |