数据结构(C++描述)(第2版) / 21世纪高等学校计算机专业实用规划教材
¥32.00定价
作者: 熊岳山
出版时间:2015年2月
出版社:清华大学出版社
- 清华大学出版社
- 9787302388180
- 2-1
- 40418
- 16开
- 2015年2月
- 工学
- 计算机科学与技术
- TP368.1
- 计算机
- 本专科、高职高专
目录
第1章 数据结构概述
1.1基本概念
1.1.1数据、数据元素和数据对象
1.1.2数据结构
1.2数据结构的分类
1.3抽象数据类型
1.3.1两种软件设计方法
1.3.2数据类型
1.3.3抽象数据类型
1.4算法和算法分析
1.4.1算法的概念
1.4.2算法分析
习题
第2章 顺序表
2.1线性表
2.1.1线性表的抽象数据类型表示
2.1.2线性表的类表示
2.2数组
2.2.1数组的抽象数据类型
2.2.2数组元素的插入和删除
2.2.3数组的应用
2.3栈
2.3.1栈的抽象数据类型及其实现
2.3.2栈的应用
2.4 队列
2.4.1队列的抽象数据类型及其实现
2.4.2优先级队列
2.4.3队列的应用——离散事件驱动模拟
习题
第3章 链表
3.1动态数据结构
3.2单链表
3.2.1基本概念
3.2.2单链表结点类
3.2.3单链表类
3.2.4栈的单链表实现
3.2.5链式队列
3.2.6链表的应用举例
3.3循环链表
3.4双链表
习题
第4章 排序
4.1基本概念
4.2插入排序
4.2.1直接插人排序
4.2.2折半插入排序
4.2.3Shell排序
4.3选择排序
4.3.1直接选择排序
4.3.2树形选择排序
4.4交换排序
4.4.1冒泡排序
4.4.2快速排序
4.5分配排序
4.5.1基本思想
4.5.2基数排序
4.6归并排序
4.7外部排序
4.7.1二路合并排序
4.7.2多路替代选择合并排序
4.7.3最佳合并排序
4.8排序算法的时间下界
习题
第5章 查找
5.1基本概念
5.2顺序查找
5.3折半查找
5.4分块查找
5.5字符串的模式匹配
5.5.1朴素的模式匹配算法
5.5.2KMP匹配算法
5.5.3算法效率分析
5.6散列查找
5.6.1概述
5.6.2散列函数
5.6.3冲突的处理
5.6.4散列查找的效率
习题
第6章 树和二叉树
6.1树的概念
6.2二叉树
6.2.1二叉树的概念
6.2.2二叉树的性质
6.2.3二叉树的存储方式
6.2.4树(树林)与二叉树的相互转换
6.3树(树林)、二叉树的遍历
6.3.1树(树林)的遍历
6.3.2二叉树的遍历
6.4抽象数据类型BinaryTree以及类BinaryTree
6.4.1抽象数据类型BinaryTree
6.4.2一个完整包含类BinaryTreeNode和类BinaryTree实现的例子
6.5二叉树的遍历算法
6.5.1非递归(使用栈)的遍历算法
6.5.2线索化二叉树的遍历
习题
第7章 树形结构的应用
7.1二叉排序树
7.1.1二叉排序树与类BinarySTree
7.1.2二叉排序树的检索、插入和删除运算
7.1.3等概率查找对应的最佳二叉排序树
7.2平衡的二叉排序树
7.2.1平衡的二叉排序树与类AVLTree
7.2.2平衡二叉排序树的插入和删除
7.2.3类AVLFree与AVL树高度
7.3B—树、B+—树
7.42—3树
7.5红黑树
7.6Huffman最优二叉树
7.6.1Huffman最优二叉树概述
7.6.2树编码
7.7堆排序
7.8判定树
7.9等价类和并查集
7.9.1等价类
7.9.2并查集
7.10键树
习题
第8章 图
8.1基本概念
8.2图的存储表示
8.2.1相邻矩阵表示图
8.2.2图的邻接表表示
8.2.3邻接多重表
8.3构造Graph类
8.3.1基于邻接表表示的Graph类
8.3.2Graph类的实现
8.4图的遍历
8.4.1深度优先遍历
8.4.2广度优先遍历
8.5最小代价生成树
8.6单源最短路径问题——Dijkstra算法
8.7每一对顶点间的最短路径问题
8.8有向无回路图
8.8.1DAG图和AOV、AOE网
8.8.2AOV网的拓扑排序
8.8.3AOE网的关键路径
习题
第9章 多维数组
9.1多维数组的顺序存储
9.2特殊矩阵的顺序存储
9.3稀疏矩阵的存储
9.4抽象数据类型稀疏矩阵与class SparseMatrix
习题
附录 Nodelib.h
参考文献
1.1基本概念
1.1.1数据、数据元素和数据对象
1.1.2数据结构
1.2数据结构的分类
1.3抽象数据类型
1.3.1两种软件设计方法
1.3.2数据类型
1.3.3抽象数据类型
1.4算法和算法分析
1.4.1算法的概念
1.4.2算法分析
习题
第2章 顺序表
2.1线性表
2.1.1线性表的抽象数据类型表示
2.1.2线性表的类表示
2.2数组
2.2.1数组的抽象数据类型
2.2.2数组元素的插入和删除
2.2.3数组的应用
2.3栈
2.3.1栈的抽象数据类型及其实现
2.3.2栈的应用
2.4 队列
2.4.1队列的抽象数据类型及其实现
2.4.2优先级队列
2.4.3队列的应用——离散事件驱动模拟
习题
第3章 链表
3.1动态数据结构
3.2单链表
3.2.1基本概念
3.2.2单链表结点类
3.2.3单链表类
3.2.4栈的单链表实现
3.2.5链式队列
3.2.6链表的应用举例
3.3循环链表
3.4双链表
习题
第4章 排序
4.1基本概念
4.2插入排序
4.2.1直接插人排序
4.2.2折半插入排序
4.2.3Shell排序
4.3选择排序
4.3.1直接选择排序
4.3.2树形选择排序
4.4交换排序
4.4.1冒泡排序
4.4.2快速排序
4.5分配排序
4.5.1基本思想
4.5.2基数排序
4.6归并排序
4.7外部排序
4.7.1二路合并排序
4.7.2多路替代选择合并排序
4.7.3最佳合并排序
4.8排序算法的时间下界
习题
第5章 查找
5.1基本概念
5.2顺序查找
5.3折半查找
5.4分块查找
5.5字符串的模式匹配
5.5.1朴素的模式匹配算法
5.5.2KMP匹配算法
5.5.3算法效率分析
5.6散列查找
5.6.1概述
5.6.2散列函数
5.6.3冲突的处理
5.6.4散列查找的效率
习题
第6章 树和二叉树
6.1树的概念
6.2二叉树
6.2.1二叉树的概念
6.2.2二叉树的性质
6.2.3二叉树的存储方式
6.2.4树(树林)与二叉树的相互转换
6.3树(树林)、二叉树的遍历
6.3.1树(树林)的遍历
6.3.2二叉树的遍历
6.4抽象数据类型BinaryTree以及类BinaryTree
6.4.1抽象数据类型BinaryTree
6.4.2一个完整包含类BinaryTreeNode和类BinaryTree实现的例子
6.5二叉树的遍历算法
6.5.1非递归(使用栈)的遍历算法
6.5.2线索化二叉树的遍历
习题
第7章 树形结构的应用
7.1二叉排序树
7.1.1二叉排序树与类BinarySTree
7.1.2二叉排序树的检索、插入和删除运算
7.1.3等概率查找对应的最佳二叉排序树
7.2平衡的二叉排序树
7.2.1平衡的二叉排序树与类AVLTree
7.2.2平衡二叉排序树的插入和删除
7.2.3类AVLFree与AVL树高度
7.3B—树、B+—树
7.42—3树
7.5红黑树
7.6Huffman最优二叉树
7.6.1Huffman最优二叉树概述
7.6.2树编码
7.7堆排序
7.8判定树
7.9等价类和并查集
7.9.1等价类
7.9.2并查集
7.10键树
习题
第8章 图
8.1基本概念
8.2图的存储表示
8.2.1相邻矩阵表示图
8.2.2图的邻接表表示
8.2.3邻接多重表
8.3构造Graph类
8.3.1基于邻接表表示的Graph类
8.3.2Graph类的实现
8.4图的遍历
8.4.1深度优先遍历
8.4.2广度优先遍历
8.5最小代价生成树
8.6单源最短路径问题——Dijkstra算法
8.7每一对顶点间的最短路径问题
8.8有向无回路图
8.8.1DAG图和AOV、AOE网
8.8.2AOV网的拓扑排序
8.8.3AOE网的关键路径
习题
第9章 多维数组
9.1多维数组的顺序存储
9.2特殊矩阵的顺序存储
9.3稀疏矩阵的存储
9.4抽象数据类型稀疏矩阵与class SparseMatrix
习题
附录 Nodelib.h
参考文献