目录 1
第1章 绪论 1
1.1 数据结构 1
1.1.1 基本概念和术语 1
1.1.2 数据结构的定义 2
1.2 算法 5
1.2.1 算法的概念及描述 5
1.2.2 算法的性能分析 6
习题 9
第2章 线性表 12
2.1 线性表的定义及基本操作 12
2.1.1 线性表的定义 12
2.1.2 线性表的基本操作 13
2.2 线性表的顺序存储结构 13
2.2.1 线性表的顺序存储结构——顺序表 13
2.2.2 顺序存储结构的特点 14
2.2.3 顺序表的基本操作 15
2.2.4 顺序表的应用举例 17
2.3 线性表的链式存储结构 19
2.3.1 线性表的链式存储结构——链表 19
2.3.2 单链表的基本操作 21
2.3.3 双向链表 24
2.3.4 循环链表 27
2.3.5 单链表的应用举例 28
2.3.6 链式存储结构的特点 32
2.4.2 数组的顺序表示和实现 33
2.4 数组 33
2.4.1 数组的定义 33
2.5 稀疏矩阵 35
2.5.1 稀疏矩阵的定义 35
2.5.2 稀疏矩阵的顺序存储 35
2.5.3 稀疏矩阵的链式存储 38
习题 40
3.1 栈 42
3.1.1 栈的定义和基本操作 42
第3章 栈和队列 42
3.1.2 栈的顺序存储结构 43
3.1.3 栈的链式存储结构 45
3.1.4 递归 47
3.2 队列 50
3.2.1 队列的定义及基本操作 50
3.2.2 队列的顺序存储 50
3.2.3 队列的链式存储 57
3.3.1 栈的应用 62
3.3 栈和队列操作应用举例 62
3.3.2 队列的应用 65
习题 68
第4章 串 69
4.1 串的定义及基本操作 69
4.2 串的存储结构 70
4.2.1 串的静态存储 71
4.2.2 串的动态存储 72
4.2.3 串的基本操作的实现 73
习题 77
第5章 树和二叉树 78
5.1 树的基本概念 78
5.1.1 树的定义 78
5.1.2 树的逻辑表示 79
5.1.3 树的基本术语 80
5.2 树的存储结构和基本操作 81
5.2.1 树的存储结构 81
5.2.2 树的基本操作 84
5.3 二叉树的基本概念和基本性质 85
5.3.1 二叉树的定义 85
5.3.2 二叉树的基本性质 86
5.4 二叉树的存储结构和基本操作 87
5.4.1 顺序存储结构 87
5.4.2 链式存储结构 88
5.4.3 基本操作 90
5.5 二叉树的遍历 91
5.5.1 前序遍历 91
5.5.3 后序遍历 92
5.5.2 中序遍历 92
5.5.4 层次遍历 93
5.6 树和森林与二叉树之间的关系 94
5.6.1 树转换成二叉树 94
5.6.2 森林转换成二叉树 94
5.6.3 二叉树转换成森林 95
5.6.4 树与二叉树之间的存储结构转换关系 96
5.7.1 基本概念 97
5.7 哈夫曼树及其应用 97
5.7.2 哈夫曼树(最优二叉树) 98
5.7.3 哈夫曼编码 99
5.7.4 哈夫曼(Huffman)算法 101
5.8 二叉排序树 103
5.8.1 二叉排序树定义 103
5.8.2 二叉排序树上的操作 103
5.8.3 性能分析 107
习题 108
6.1.1 图的定义 110
第6章 图 110
6.1 图的基本概念 110
6.1.2 图的基本术语 111
6.2 图的存储结构 114
6.2.1 邻接矩阵 114
6.2.2 邻接表 116
6.3 图的遍历 119
6.3.1 深度优先搜索 119
6.3.2 广度优先搜索 121
6.4 连通网的最小生成树 123
6.4.1 生成树及最小生成树的相关概念 123
6.4.2 最小生成树的构造方法 123
6.4.3 普里姆(Prim)算法 123
6.4.4 克鲁斯卡尔(Kruskal)算法 126
6.5 最短路径 127
6.6 拓扑排序 129
习题 132
7.1 查找的基本概念 135
第7章 查找 135
7.2 顺序查找 136
7.2.1 顺序存储的顺序查找 137
7.2.2 链式存储的顺序查找 137
7.3 折半查找 138
7.4 哈希(Hash)表查找 141
7.4.1 什么是哈希表查找 141
7.4.2 哈希函数的构造方法 142
7.4.3 处理冲突的方法 143
习题 146
第8章 排序 148
8.1 排序的基本概念 148
8.2 插入排序 150
8.2.1 直接插入排序 150
8.2.2 希尔排序 152
8.3 选择排序 154
8.3.1 直接选择排序 154
8.3.2 堆排序 155
8.4.1 冒泡排序 159
8.4 交换排序 159
8.4.2 快速排序 161
8.5 归并排序 163
8.6 基数排序 166
8.7 常用排序方法的比较 166
8.7.1 常用排序方法的比较 166
8.7.2 排序方法的选择 167
习题 167
实验一 一元多项式的乘法运算 169
附录一 169
实验二 栈的应用——表达式的求值 174
实验三 简单的串的模式匹配算法 181
实验四 二叉树的遍历 182
实验五 图的应用 187
实验六 分块查找 189
实验七 内部排序算法比较 191
附录二 部分习题参考答案 193
附录三 历年计算机水平与资格考试的数据结构试题 204