前言页 1
第一章 绪论 1
1.1 数据结构的基本概念 1
1.2 算法的概念与描述 3
1.3 小结 6
第二章 C语言中的数据类型 7
2.1 C语言中数据的存储表示 7
2.1.1 位 7
2.1.2 字节 7
2.1.3 二进制编码的十进制数 7
2.1.4 美国标准信息交换码 8
2.2 基本数据类型 9
2.2.1 字符 9
2.2.2 字符串 9
2.2.3 整数 9
2.2.4 实数 11
2.2.5 基于基本数据类型的操作 14
2.3 派生数据类型 15
2.3.1 数组 15
2.3.2 多维数组 16
2.3.3 指针 16
2.4 复合数据类型 19
2.4.1 结构 19
2.4.2 联合 20
2.5 小结 21
第三章 线性表 22
3.1 线性表的定义 22
3.2 线性表的顺序存储结构及其运算 23
3.3 线性表的链式存储结构及其运算 28
3.3.1 线性链表 29
3.3.2 双向链表 34
3.3.3 循环链表 38
3.4.1 串的基本概念 41
3.4 串 41
3.4.2 串的存储及运算 42
3.4.3 串的应用 47
3.5 线性表的应用 49
3.6 小结 55
3.7 习题 55
第四章 栈和队列 57
4.1 栈 57
4.1.1 栈的顺序存储结构 57
4.1.2 栈的链式存储结构 59
4.2 栈的应用 61
4.2.1 函数调用与栈 61
4.2.2 迷宫求解 63
4.3 队列 66
4.3.1 队列的顺序存储结构 67
4.3.2 队列的链式存储结构 71
4.4 队列的应用 73
4.5 小结 76
4.6 习题 77
第五章 树 78
5.1 树的基本概念 78
5.2 树的存储表示 79
5.2.1 双亲表示法 79
5.2.2 孩子表示法 80
5.2.3 孩子兄弟表示法 82
5.3 二叉树 83
5.3.1 二叉树的定义 83
5.3.2 二叉树的性质 84
5.3.3 二叉树的存储表示 86
5.4 二叉树的遍历 87
5.4.1 遍历的递归过程 88
5.4.2 遍历的非递归过程 89
5.4.3 遍历的性质 94
5.5 线索二叉树 97
5.6 树与二叉树的转换 103
5.6.1 树与二叉树的转换 103
5.6.2 森林与二叉树的转换 103
5.6.3 树与森林的遍历 104
5.7 赫夫曼树 105
5.7.1 最优二叉树 105
5.7.2 前缀编码 107
5.7.3 赫夫曼编码 108
5.8 小结 111
5.9 习题 112
第六章 图 113
6.1 图的数学基础与基本概念 113
6.2 图的存储表示 115
6.2.1 邻接矩阵 115
6.2.2 邻接表 120
6.2.3 十字链表 124
6.2.4 邻接多重表 127
6.3 图的遍历 129
6.3.1 宽度优先遍历 129
6.3.2 深度优先遍历 131
6.4 图的连通性 133
6.4.1 无向图的连通分量 133
6.4.2 无向图的生成树 133
6.4.3 最小生成树 135
6.5 图的最短路径 136
6.6 小结 139
6.7 习题 139
第七章 查找 141
7.1 静态查找 141
7.1.1 顺序查找 141
7.1.2 二分查找 142
7.1.3 分块查找 144
7.2 动态查找 146
7.2.1 二叉排序树查找 146
7.2.2 散列表查找 153
7.3 小结 159
7.4 习题 160
第八章 排序 161
8.1 选择排序 161
8.1.1 简单选择排序 161
8.1.2 堆排序 163
8.2 插入排序 166
8.2.1 直接插入排序 166
8.2.2 二分插入排序 167
8.2.3 希尔排序 167
8.3 交换排序 168
8.3.1 冒泡排序 169
8.3.2 快速排序 170
8.4 归并排序 172
8.5 小结 173
8.6 习题 174
第九章 文件 175
9.1 文件的结构 175
9.1.1 文件的逻辑结构 175
9.1.2 文件的物理结构 175
9.2 文件的目录 179
9.2.1 一级目录结构 179
9.2.2 二级目录结构 180
9.2.3 多级目录结构 181
9.3 文件的访问 182
9.3.1 顺序文件 182
9.3.2 随机文件 187
9.4 小结 188
9.5 习题 188