目录 1
第一章 引论 1
1.1 数据和数据结构 1
1.2 C程序设计语言概述 1
1.2.1 简单程序举例 1
1.2.2 基本数据类型 2
1.2.3 运算符 3
1.2.4 数据输入和输出 5
1.2.5 条件语句 9
1.2.6 循环语句 9
1.2.7 开关语句 11
1.2.9 文件蕴含与宏替换 13
1.2.8 转跳与继续语句 13
1.3 指针与结构 14
1.3.1 指针 14
1.3.2 指针和数组 15
1.3.3 结构 16
1.3.4 指向结构的指针 17
1.4 函数 18
1.4.1 函数的参数 18
1.4.2 函数的返回值 20
1.4.3 指向函数的指针 21
1.4.4 变量的作用域及其初值 21
1.5 递归 23
1.5.1 简单变换 23
1.5.2 组合问题 25
1.5.3 Hanoi塔 26
第二章 线性表 29
2.1 顺序式线性表 29
2.1.1 栈 29
2.1.2 排队 30
2.1.3 两端排队 32
2.1.4 查表 32
2.1.5 迷宫问题 33
2.2 链接式线性表 37
2.2.1 链接式栈 38
2.2.2 链接式排队 39
2.2.3 向前链表 41
2.3 环形链表 44
2.3.1 关于环形链表的操作 44
2.3.2 多项式的代数运算 47
2.4 环形双向链表 52
2.5 共轭链表 55
2.6 稀疏矩阵 59
2.6.1 用数组表示稀疏矩阵 59
2.6.2 用链表表示稀疏矩阵 61
第三章 文本编辑 68
3.1 文件的读写 68
3.1.1 通过库函数读写文件 68
3.1.2 通过系统调用读写文件 71
3.2 小型编辑程序 73
3.2.1 表示方法 73
3.2.2 编辑操作 74
3.2.3 编辑程序 75
3.3.1 基本功能 84
3.3 标准编辑程序 84
3.3.2 实现原理 85
第四章 树 103
4.1 树和二元树 103
4.1.1 树 103
4.1.2 二元树及其表示方法 103
4.2 遍历二元树 106
4.2.1 遍历二元树的递归算法 106
4.2.2 遍历二元树的非递归算法 108
4.2.3 自持方式遍历二元树 111
4.2.4 由数据序列恢复二元树 114
4.3 索链二元树 117
4.3.1 索链二元树的建立 118
4.3.2 单步遍历索链二元树 121
4.3.3 索链二元树的插入操作 126
4.3.4 复制索链二元树 130
4.3.5 右索链二元树 132
4.4 树和二元树的性质特点 137
4.4.1 树的高度和深度 137
4.4.2 完全二元树 138
4.4.3 Huffman树 138
4.5 二元分类树 141
4.6 算术表达式 149
4.6.1 算术表达式的表示方法 149
4.6.2 丛的二元树表示法 152
4.7 集合的树表示法 156
5.1.2 邻接矩阵 161
5.1.1 有向图 161
5.1 有向图及其表示方法 161
第五章 图 161
5.1.3 邻接表 162
5.2 有向图的遍历 164
5.2.1 先深搜索 164
5.2.2 先广搜索 167
5.3 拓扑分类 169
5.3.1 先深搜索拓扑分类 169
5.3.2 先广搜索拓扑分类 170
5.4 单源最短路径问题 173
5.5 每对顶点之间的最短路径问题 175
5.6 无向图及其表示方法 178
5.7 最小连接树 178
5.7.1 Prim算法 178
5.7.2 Kruskal算法 180
第六章 分类 184
6.1 选择法 184
6.2 交换法 186
6.3 冒泡法 186
6.4 插入法 188
6.5 Shell法 189
6.6 快速法 190
6.7 堆式法 192
6.8 基数法 194
6.9 通用分类程序 199
附录A C编译程序使用说明 202
附录B C语言标准I/O库摘要 203
参考文献 204