第1章 预备知识 1
1.1 集合 1
1.1.1 集合及其基本运算 1
1.1.2 自然数集与数学归纳法 3
1.1.3 笛卡儿积 5
1.1.4 二元关系 5
1.2 算法 6
1.2.1 算法的基本概念 6
1.2.2 算法设计基本方法 8
1.2.3 算法的复杂度分析 13
习题1 15
第2章 基本数据结构及其运算 16
2.1 数据结构的基本概念 16
2.1.1 什么是数据结构 16
2.1.2 数据结构的图形表示 19
2.2 线性表及其顺序存储结构 21
2.2.1 线性表及其运算 21
2.2.2 栈及其应用 30
2.2.3 队列及其应用 40
2.3 线性链表 51
2.3.1 线性链表的基本概念 51
2.3.2 线性链表的插入与删除 55
2.3.3 带链的栈与队列 60
2.3.4 循环链表 67
2.3.5 多项式的表示与运算 70
2.4 线性表的索引存储结构 77
2.4.1 索引存储的概念 77
2.4.2 “顺序-索引-顺序”存储方式 79
2.4.3 “顺序索引-链接”存储方式 80
2.4.4 多重索引存储结构 80
2.5 数组 82
2.5.1 数组的顺序存储结构 82
2.5.2 规则矩阵的压缩 83
2.5.3 一般稀疏矩阵的表示 86
2.6 树与二叉树 111
2.6.1 树的基本概念 111
2.6.2 二叉树及其基本性质 114
2.6.3 二叉树的遍历 117
2.6.4 二叉树的存储结构 118
2.6.5 穿线二叉树 123
2.6.6 表达式的线性化 136
2.7 图 137
2.7.1 图的基本概念 137
2.7.2 图的存储结构 138
2.7.3 图的遍历 142
2.7.4 图邻接表类 143
习题2 149
第3章 查找与排序技术 152
3.1 基本的查找技术 152
3.1.1 顺序查找 152
3.1.2 有序表的对分查找 152
3.1.3 分块查找 157
3.2 哈希表技术 158
3.2.1 哈希表的基本概念 158
3.2.2 几种常用的哈希表 161
3.3 基本的排序技术 179
3.3.1 冒泡排序与快速排序 179
3.3.2 简单插入排序与希尔排序 184
3.3.3 简单选择排序与堆排序 186
3.3.4 其他排序方法简介 189
3.4 二叉排序树及其查找 193
3.4.1 二叉排序树的基本概念 194
3.4.2 二叉排序树的插入 195
3.4.3 二叉排序树的删除 196
3.4.4 二叉排序树查找 198
3.5 多层索引树及其查找 200
3.5.1 B-树 201
3.5.2 B+树 211
3.6 拓扑分类 220
习题3 223
第4章 资源管理技术 225
4.1 操作系统的概念 225
4.1.1 操作系统的功能与任务 225
4.1.2 操作系统的发展过程 226
4.1.3 操作系统的分类 229
4.2 多道程序设计 232
4.2.1 并发程序设计 232
4.2.2 进程 235
4.2.3 进程之间的通信 239
4.2.4 多道程序的组织 244
4.3 存储空间的组织 245
4.3.1 内存储器的管理技术 245
4.3.2 外存储器中文件的组织结构 249
习题4 256
第5章 数据库设计技术 257
5.1 数据库基本概念 257
5.1.1 数据库技术与数据库系统 257
5.1.2 数据描述 262
5.1.3 数据模型 264
5.2 关系代数 268
5.3 数据库设计 274
5.3.1 数据库设计的基本概念 274
5.3.2 数据库设计的过程 275
5.3.3 数据字典 282
习题5 283
第6章 编译技术概述 285
6.1 编译程序的工作过程及其基本组成 285
6.1.1 编译程序的工作过程 285
6.1.2 编译程序的基本组成 286
6.2 状态矩阵法的编译过程 287
6.2.1 状态矩阵法的基本原理 287
6.2.2 状态矩阵的压缩 288
6.3 词法分析 290
6.3.1 词法分析的任务 290
6.3.2 读字符程序 291
6.3.3 状态矩阵法的词法分析过程 291
6.3.4 算术常数的识别和翻译 295
6.4 中间语言表示 297
6.4.1 波兰表示 297
6.4.2 三元组表示 300
6.5 语法的分析与加工 303
习题6 308
第7章 应用软件设计与开发技术 308
7.1 软件工程概述 310
7.1.1 软件工程的概念 310
7.1.2 软件生命周期 310
7.1.3 软件支援环境 313
7.2 软件详细设计的表达 314
7.2.1 程序流程图 314
7.2.2 NS图 315
7.2.3 问题分析图PAD 316
7.2.4 判定表 317
7.2.5 过程设计语言PDL 318
7.3 结构化分析与设计方法 318
7.3.1 应用软件开发的原则和方法 318
7.3.2 结构化分析方法 320
7.3.3 结构化设计方法 324
7.4 测试与调试基本技术 331
7.4.1 测试 331
7.4.2 调试 337
7.5 软件开发新技术 339
7.5.1 原型方法 339
7.5.2 瀑布模型 340
7.5.3 面向对象技术 341
习题7 343
参考文献 344