第1章 机器语言程序简介 1
1.1 电子计算机的基本组成及其工作过程 1
1.2 机器语言程序设计 3
1.3 子程序调用过程 6
习题 6
第2章 C语言基础 7
2.1 基本类型变量和指针 7
2.2.1 整型 11
2.2 基本类型变量和运算 11
2.2.2 字符型 12
2.2.3 实型 13
2.2.4 指针类型(地址类型) 13
2.3 一维数组和指针 14
2.3.1 指针 14
2.3.2 一维数组 15
2.3.3 一维数组和指针变量的比较 16
2.4 二维数组和指针 18
2.4.1 二维数组和二维指针变量 18
2.4.2 二维数组和一维指针变量 21
2.4.3 指针数组和指针的指针 22
2.5 结构与指针 24
2.5.1 结构变量 24
2.5.2 结构指针与数组 27
2.6 枚举类型 29
2.7 类型名选择 30
2.8 条件表达式与控制语句 32
2.8.1 关系运算 32
2.8.3 条件控制语句 33
2.8.2 逻辑运算 33
2.8.4 循环控制语句 39
2.8.5 break语句和continue语句 42
2.9 函数 43
2.9.1 函数与指针 43
2.9.2 函数调用与变量的存储类别 49
2.9.3 动态单元的分配和释放 56
2.10 与数组匹配的指针作为函数的参数 58
2.11 输入输出函数 61
2.11.1 printf函数 61
2.11.2 scanf函数 63
2.11.3 getchar函数和putchar函数 66
2.12 编译预处理 67
2.13 文件 70
2.14 初始化与赋值 74
习题 78
第3章 数据结构概论 81
3.1 数据结构和数据类型 81
3.2 算法和程序 84
3.3 算法分析 87
习题 90
第4章 顺序表 91
习题 98
第5章 顺序队列 99
习题 104
第6章 顺序栈 105
6.1 顺序栈的定义 105
6.2 中缀表达式求值 109
习题 115
7.1 C语言串 116
第7章 字符串 116
7.2 新类型串 120
习题 131
第8章 链表 132
8.1 单向链式存储结构 132
8.2 单向链表 138
8.3 双向链式存储结构 142
8.4 双向链表 147
习题 150
9.1 链队列的定义 152
第9章 链队列 152
9.2 事件驱动模拟 154
第10章 二叉树 165
10.1 二叉树的概念和性质 165
10.1.1 树和二叉树的概念 165
10.1.2 二叉树的性质 166
10.2 二叉树的存储 167
10.2.1 顺序存储结构 167
10.2.2 链式存储结构 169
10.3.1 层次遍历 170
10.3 二叉树层次遍历 170
10.3.2 建立二叉链表 172
10.3.3 垂直输出二叉树 173
10.4 二叉树的前序遍历 177
10.4.1 前序遍历 177
10.4.2 求二叉树从根至叶子的所有路径 179
10.4.3 求集合的幂集 182
10.4.4 快速排序 185
10.5.1 汉诺塔问题 188
10.5 二叉树中序遍历 188
10.5.2 由前序和中序序列建立二叉链表 190
10.6 二叉树后序遍历 192
10.7 递归评估 194
10.8 递归遍历的模拟 196
10.8.1 递归前序遍历的模拟 196
10.8.2 递归中序遍历的模拟 200
10.8.3 递归后序遍历的模拟 202
10.9 堆 205
10.10.1 哈夫曼树的定义 211
10.10 哈夫曼树 211
10.10.2 建立哈夫曼树 212
10.10.3 哈夫曼编码 215
10.11 二叉搜索树 216
10.12 平衡二叉搜索树 223
10.13 线索二叉树 230
习题 234
11.1 树的存储与遍历 236
11.1.1 树的存储 236
第11章 树 236
11.1.2 树的层次遍历 240
11.1.3 树的前序遍历 242
11.1.4 树的后序遍历 247
11.2 八皇后问题 249
11.3 八皇后解的图形输出 253
11.3.1 图形系统初始化 253
11.3.2 图形设计与实现 254
习题 262
12.1 图的概念和存储 263
12.1.1 图的概念 263
第12章 图 263
12.1.2 邻接矩阵表示法 264
12.1.3 邻接表表示法 268
12.2 图的遍历 269
12.2.1 广度遍历 269
12.2.2 深度遍历 271
12.3 最小生成树 273
12.4 单源最短路径 278
12.5 拓扑排序 283
12.6 关键路径 286
12.7 迷宫求解 290
12.8 骑士巡游和汉密尔顿路 297
习题 300
第13章 C++程序 301
13.1 C++对C的基本扩充 301
13.1.1 注释和输入输出语句 301
13.1.2 作用域说明 302
13.1.3 缺省函数 303
13.1.4 引用 304
13.1.6 内存的动态申请和释放 305
13.1.5 常量修饰符const 305
13.2 C++的基本要素 306
13.2.1 类和对象 306
13.2.2 this指针 311
13.2.3 友元 312
13.2.4 运算符重载 314
13.2.5 初始化与赋值 315
13.3 重载 317
13.3.1 函数重载 317
13.3.2 运算符重载 322
13.4.1 模板函数 326
13.4 形式数据类型 326
13.4.2 模板类 327
13.4.3 中缀表达式求值 329
13.5 继承和抽象类 332
13.5.1 继承 332
13.5.2 派生类中的构造函数和析构函数 335
13.5.3 虚函数 337
13.5.4 纯虚函数和抽象类 339
习题 340
参考文献 342