第1章 C语言程序的基本结构 1
1.1 基本数据类型 1
1.1.1 整型 1
1.1.2 实型 2
1.1.3 字符型 2
1.1.4 空类型 2
1.2 运算符与表达式 2
1.2.1 常量与变量 2
1.2.2 基本运算符与表达式 4
1.2.3 类型转换 6
1.2.4 表达式求值顺序 6
1.3 语句 7
1.3.1 简单语句 7
1.3.2 分支语句 8
1.3.3 循环语句 10
1.3.4 其它语句 12
1.4 译预处理 13
1.5 输入/输出 14
1.6 C程序的基本结构 15
第2章 函数 18
2.1 函数的定义与调用 18
2.1.1 函数定义 18
2.1.2 函数调用 19
2.1.3 函数原型 19
2.1.4 函数的参数传递 19
2.2 C程序的一般结构 20
2.3 标识符的作用域 20
2.3.1 外部变量与局部变量 21
2.3.2 变量的存储类别 22
2.3.3 内部函数与外部函数 23
2.3.4 变量定义时的初思化 24
2.4 递归 26
第3章 指针与数组 29
3.1 数组 29
3.1.1 一维数组 29
3.1.2 多维数组 31
3.2 指针 33
3.2.1 指针变量的定义 33
3.2.2 指针的物理意义 33
3.2.3 指针的取值与运算 34
3.2.4 指针作为函数参数 36
3.3.1 指针与一维数组 37
3.3 指针与数组的关系 37
3.3.2 字符串 41
3.3.3 指针数组 45
3.3.4 指针的指针 45
3.3.5 数组指针 46
3.3.6 指针与多维数组 46
3.3.7 函数指针 49
3.4 命令行参数 51
第4章 结构 53
4.1 结构 53
4.1.1 结构的定义 53
4.1.2 结构的访问 54
4.1.3 结构指针 55
4.2 类型定义 55
4.3.2 联合的一般用法 59
4.3 联合 59
4.3.1 联合的定义与访问 59
4.4 链表 60
4.4.1 内存空间的动态分配 60
4.4.2 单向链表的操作 61
第1章 绪论 67
1.1 数据结构的含义 68
1.2 一些基本概念 70
1.3 学习数据结构的目的 73
1.4 算法的定义及其特性 73
1.5 算法分析初步 75
第2章 线性表 79
2.1 线性表的定义及运算 79
2.2.1 顺序存储结构的表示 82
2.2 线性表的顺序存储结构 82
2.2.2 基本运算的相关算法 83
2.3 线性表的链式存储结构 86
2.3.1 单链表结构 86
2.3.2 基本运算的相关算法 88
2.3.3 单向及双向循环链表 93
2.4 线性表的应用举例 96
2.4.1 Josephu问题 96
2.4.2 一元多项式的表示与相加 97
第3章 栈和队列 100
3.1 栈的定义及运算 100
3.1.1 概述 100
3.1.2 顺序栈及相关算法 101
3.1.3 链式栈及相关算法 103
3.2.1 数制转换 104
3.2 栈应用举例 104
3.2.2 表达式括号匹配检验 105
3.2.3 行编辑处理 106
3.2.4 表达式求值 107
3.3 栈与递归函数 111
3.4 队列的定义及运算 113
3.4.1 概述 113
3.4.2 循环队列及相关算法 114
3.4.3 链式队列及相关算法 117
3.5 队列应用举例 118
3.5.1 迷宫问题 118
3.5.2 离散事件模拟 122
第4章 字符串 125
4.1 字符串的定义及运算 125
4.2.1 顺序存储的格式 127
4.2 字符串的顺序存储结构 127
4.2.2 串名的存储映像 128
4.2.3 基本运算的算法实现 129
4.3 字符串的链式结构及相关算法 133
第5章 数组和广义表 137
5.1 多维数组的表示 137
5.2 数组的存储映像 138
5.3 矩阵的压缩存储 140
5.3.1 特殊矩阵的压缩存储 140
5.3.2 稀疏矩阵的压缩存储 143
5.4 广义表的定义 147
5.5 广义表的存储结构 149
6.1 树 152
第6章 树和二叉树 152
6.1.1 树的定义及运算 153
6.1.2 树的性质 156
6.2 二叉树 158
6.2.1 二叉树的定义及运算 158
6.2.2 二叉树的性质 160
6.2.3 二叉树的存储结构 162
6.3 二叉树的遍历 166
6.3.1 二叉树的递归遍历算法 166
6.3.2 二叉树的非递归遍历算法 168
6.3.3 遍历算法的应用 173
6.4 树和森林 176
6.4.1 树的存储结构 176
6.4.2 森林与二叉树的转换 180
6.4.3 树和森林的遍历 182
6.5 二叉树的应用举例 183
6.5.1 Huffman树及其构造算法 183
6.5.2 Huffman编码及译码 188
第7章 图 191
7.1 图的定义及运算 191
7.2 图的存储结构 196
7.2.1 数组表示法 197
7.2.2 邻接表表示法 200
7.2.3 十字链表表示法 203
7.2.4 邻接多重表表示法 205
7.3 图的遍历 206
7.3.1 深度优先搜索算法 206
7.3.2 广义优先搜索算法 207
7.3.3 求连通分量的算法 209
7.4 最小生成树 210
7.4.1 Prim算法 210
7.4.2 Kruskal算法 214
第8章 查找 216
8.1 查找概述 216
8.2 顺序表的查找 217
8.2.1 顺序查找算法及分析 218
8.2.2 折半查找算法及分析 218
8.2.3 分块查找算法及分析 221
8.3 树表的查找 223
8.3.1 二叉排序树的构造、删除及查找算法 223
8.3.2 B-树 231
8.4.1 Hash表的含义 234
8.4 Hash表的查找 234
8.4.2 Hash函数的构造方法 236
8.4.3 处理冲突的方法 239
8.4.4 Hash表的查找及分析 241
第9章 排序 245
9.1 排序概述 245
9.2 插入排序 247
9.2.1 直接插入排序 247
9.2.2 折半插入排序 249
9.2.3 链表插入排库 250
9.2.4 Shell排序 252
9.3 交换排序 254
9.3.1 起泡排序 254
9.3.2 快速排序 255
9.4.1 直接选择排序 258
9.4 选择排序 258
9.4.2 堆选择排序 259
9.5 归并排序 266
第1章 概述 269
1.1 数据库技术概念 269
1.1.1 数据管理技术的发展 269
1.1.2 数据库系统特点 271
1.1.3 数据库应用系统组成 272
1.2 数据模型 273
1.2.1 数据加工 274
1.2.2 实体间的联系 275
1.2.3 数据模型 276
1.2.4 信息模型 280
1.3 数据库管理系统 281
1.3.1 数据库的管理结构 282
1.3.2 数据存取流程 284
1.3.3 数据库管理系统DBMS的功能及组成 284
第2章 关系模型系统 287
2.1 关系型数据库的特点 287
2.2 关系及关系模型的概念 288
2.2.1 关系 288
2.2.2 关系模型 288
2.3 关系型数据库的数据操纵语言DML 290
2.3.1 关系代数 291
2.3.2 关系代数完成数据查询 294
2.4 关系型数据库的标准语言SQL 295
2.4.1 SQL的层次结构 295
2.4.2 SQL的数据操纵语言DML 296
2.4.3 嵌入式SQL 300
2.4.4 SQL的数据定义语句 302
第3章 关系数据理论 306
3.1 函数依赖 307
3.1.1 函数依赖 307
3.1.2 函数依赖集F的逻辑蕴涵 309
3.1.3 码(关键字) 310
3.2 范式 311
3.2.1 第一范式(1NF) 311
3.2.2 第二范式(2NF) 311
3.2.3 第三范式(3NF) 312
3.2.4 BC范式(BCNF) 313
3.3 函数依赖的公理系统 315
3.3.1 Armstrong公理 315
3.3.2 属性闭包 316
3.3.3 函数依赖最小集 318
第4章 数据库设计 321
4.1 数据库设计的步骤和准备 321
4.1.1 数据库设计步骤 321
4.1.2 设计工作的准备 322
4.2 信息结构设计 323
4.2.1 信息结构的产生步骤 323
4.2.2 信息结构设计 324
4.2.3 删除冗余的方法 325
4.3 数据库逻辑结构设计 328
4.3.1 数据库逻辑结构设计步骤 328
4.3.2 设计举例 328
参考文献 331