第一章 C语言简介 1
1.1 发展过程和特点 1
1.2 C语言程序结构 2
1.3 C语言基本符号 4
1.4 C程序编辑、编译和执行 4
第二章 数据类型 8
2.1 基本数据类型 8
2.2 数组 10
2.3 类型转换 11
第三章 运算符和表达式 13
3.1 表达式 13
3.2 算术运算符 13
3.3 关系运算符和逻辑运算符 14
3.4 位逻辑运算符 15
3.5 自增和自减运算符 16
3.6 赋值算符和组合算符 17
3.7 其他运算符 18
3.8 优先级和结合性 19
3.9 程序举例 20
习题 21
第四章 流程控制 24
4.1 条件语句 24
4.2 循环语句 26
4.3 开关语句 30
4.4 转移语句 32
4.5 程序举例 35
习题 40
第五章 函数和程序结构 42
5.1 函数定义和调用 42
5.2 函数递归 46
5.3 变量的存贮类别和作用域 48
5.4 分程序结构 54
5.5 C预处理程序 55
5.6 程序举例 60
习题 66
第六章 指针 68
6.1 指针定义及其运算 68
6.2 指针和数组 71
6.3 指针数组 74
6.4 指针和函数 76
6.5 程序举例 79
习题 84
第七章 结构 87
7.1 结构和结构指针定义 87
7.2 结构数组 90
7.3 结构嵌套 93
7.4 字段 95
7.5 联合 96
7.6 枚举类型 98
7.7 类型定义 99
7.8 程序举例 100
习题 104
第八章 输入输出函数 105
8.1 标准输入输出 105
8.2 按格式输入输出 107
8.3 内存中格式转换 111
8.4 文件存取 111
8.5 低级输入输出 118
8.6 程序举例 122
习题 128
第九章 概论 130
9.1 什么是数据结构 130
9.2 数据结构的分类 133
9.3 数据结构与算法关系 133
9.4 数据结构发展概况 134
第一部分 线性结构 136
第十章 顺序表 137
10.1 向量 137
10.2 数组 140
10.3 栈 141
10.4 队列 148
习题 151
第十一章 链表 152
11.1 单链表 152
11.2 循环链表 158
11.3 双向循环链表 159
11.4 链式栈和链式队列 161
习题 164
第十二章 线性分类 165
12.1 分类概述 165
12.2 插入分类 166
12.3 交换分类 170
12.4 归并分类 173
12.5 选择分类 176
习题 177
第十三章 线性查找 178
13.1 顺序查找 178
13.2 二分法查找 180
13.3 分块查找 182
13.4 散列(HASH)查找 183
习题 192
第二部分 非线性结构 193
第十四章 树 194
14.1 树的基本术语 194
14.2 树的逻辑结构和物理表示 195
14.3 树结构的应用概述 197
习题 199
第十五章 二叉树 200
15.1 二叉树的概念 200
15.2 二叉树的物理表示 203
15.3 周游二叉树 204
15.4 穿线树 211
15.5 一般树的二叉树表示、周游和运算 215
习题 217
第十六章 树的分类和查找 218
16.1 分类二叉树 218
16.2 哈夫曼树 224
16.3 最佳分类二叉树 228
习题 231
第三部分 复杂结构 232
第十七章 图 233
17.1 图的基本术语 233
17.2 图的物理表示 235
17.3 图的周游和生成树 238
17.4 最短路径 244
17.5 拓扑排序 251
17.6 关键路径 255
习题 257
附录 C库函数 259
参考文献 267