第1章 绪论 1
C语言关键库函数 2
键盘输入函数 2
以字符串为源或目的的输入和输出函数 3
文本屏幕定位输出函数 4
内存的分配与释放函数 5
字符串操作函数 7
文件操作函数 8
C语言关键句法 9
数据结构的基本概念和术语 16
数据类型与抽象数据类型 20
算法与算法分析 20
算法 20
算法设计的要求 21
算法的时间复杂度 21
算法的空间复杂度 23
实验指导 23
第2章 线性表基本操作 27
线性表的基本概念 29
顺序表——顺序存储的线性表 29
线性链表——链式存储的线性表 34
单链表 34
双向链表 41
循环链表 43
线性表操作的简单应用 43
静态链表 47
广义表 49
实验指导 49
第3章 栈和队列 51
栈 52
栈的定义 52
顺序栈的实现 52
链式栈的实现 54
栈的应用 55
括号匹配检查 55
算术表达式求值 57
迷宫路径求解 63
递归问题的非递归算法 66
斐波那契序列项求解 66
Ackerman函数求值 68
汉诺塔问题 74
队列 76
队列的定义 76
顺序队列的实现 77
链式队列的实现 80
队列的应用 82
实验指导 85
第4章 字符串与数组 89
字符串 90
字符串的存储 90
字符串的简单模式匹配 91
字符串模式匹配的KMP算法 91
数组与矩阵 94
数组的定义 94
矩阵的压缩存储 94
稀疏矩阵的转置与乘法 99
实验指导 105
第5章 树与二叉树 106
树的基本概念 108
树的定义 108
基本术语 108
二叉树 109
二叉树的定义和基本性质 109
二叉树的存储结构 110
二叉树的建立与销毁 111
二叉树的遍历 116
先序遍历、中序遍历和后序遍历 116
层序遍历 120
遍历算法的应用 122
线索化二叉树 124
哈夫曼树 129
树和森林 135
树的存储结构 135
森林与二叉树的转换 137
树和森林的遍历 138
实验指导 139
第6章图 141
基本概念和术语 142
图的存储结构 144
邻接矩阵 144
邻接表 147
图的遍历 150
深度优先搜索遍历 150
广度优先搜索遍历 153
图的关节点问题 155
连通网的最小生成树问题 159
普里姆(Prim)算法 159
克鲁斯卡尔(Kruskal)算法 162
最短路径问题 165
从某个源点到其他各顶点的最短路径 165
每对顶点之间的最短路径 170
拓扑排序与关键路径问题 172
拓扑排序 172
关键路径 175
实验指导 182
第7章 查找 187
基本概念和术语 187
静态查找表 188
无序顺序表的查找 188
有序顺序表的查找 188
分块查找 192
动态查找表 193
二叉排序树 193
平衡二叉树 198
B-树 208
B+树 222
键树 223
哈希表 224
哈希函数的构造方法 224
处理冲突的方法 225
实验指导 226
第8章 排序 229
排序的基本概念 230
内排序 230
插入排序 230
交换排序 235
选择排序 240
索引排序 245
计数排序 249
归并排序 251
基数排序 252
各种内排序算法的性能比较 257
外排序 258
K路平衡归并 258
置换-选择排序 260
哈夫曼归并树 261
实验指导 262
练一练答案 263
第1章 263
第2章 263
第3章 264
第4章 265
第5章 265
第6章 266
第7章 268
第8章 269