第1章 概论 1
1.1数据结构的基本概念 1
1.1.1数据的逻辑结构 2
1.1.2数据的存储结构 2
1.1.3数据的运算 3
1.2算法描述 3
1.3算法分析 4
1.3.1时间复杂度 4
1.3.2空间复杂度 5
思考与练习 6
第2章 线性数据结构 7
2.1线性表 7
2.1.1线性表的逻辑结构 7
2.1.2线性表的顺序存储结构 7
2.1.3线性表的链式存储结构 12
2.2栈 22
2.3队列 27
2.4数组 34
思考与练习 37
第3章 非线性数据结构 39
3.1树 39
3.1.1树的概念 39
3.1.2二叉树 40
3.1.3树的存储结构和遍历 46
3.1.4树、森林与二叉树的转换 47
3.1.5哈夫曼树 49
3.2图 52
3.2.1概念 52
3.2.2存储 54
3.2.3遍历 57
3.2.4最小生成树 62
思考与练习 67
第4章 查找 70
4.1线性表查找 71
4.1.1顺序查找 71
4.1.2二分查找 72
4.1.3分块查找 75
4.2哈希查找 77
4.2.1哈希表 77
4.2.2哈希函数的构造方法 78
4.2.3处理冲突的方法 79
4.2.4哈希查找 81
思考与练习 83
第5章 排序 84
5.1插入排序 84
5.1.1直接插入排序 85
5.1.2希尔排序 86
5.2交换排序 87
5.2.1冒泡排序 87
5.2.2快速排序 90
5.3选择排序 92
5.3.1直接选择排序 92
5.3.2堆排序 94
5.4归并排序 98
思考与练习 101
第6章 数据库技术概述 102
6.1信息、数据与数据处理 102
6.2数据管理技术的发展 103
6.3数据库系统的组成 106
6.4数据模型 107
6.4.1概念模型 108
6.4.2结构数据模型 110
6.5数据库系统结构 115
6.5.1数据库系统的三级模式 115
6.5.2数据库的二级映像 117
思考与练习 117
第7章 关系数据库 119
7.1关系数据结构 119
7.1.1关系的形式化定义及其有关概念 119
7.1.2关系的性质 122
7.2关系操作 123
7.2.1传统的集合运算 123
7.2.2专门的关系运算 125
7.3关系的完整性 131
7.3.1实体完整性规则 131
7.3.2参照完整性规则 132
7.3.3用户定义的完整性规则 132
7.4 SQL结构化查询语言 133
7.4.1 SQL概述 133
7.4.2数据定义功能 137
7.4.3数据查询功能 141
7.4.4数据更新功能 147
7.4.5视图 149
7.4.6数据控制功能 152
7.5关系规范化理论 154
7.5.1函数依赖 155
7.5.2范式 156
7.5.3关系模式的分解 160
思考与练习 162
第8章 关系数据库设计 165
8.1数据库设计概述 165
8.1.1数据库设计的内容 165
8.1.2数据库设计的方法 165
8.1.3数据库设计的步骤 166
8.2需求分析 168
8.2.1需求分析的任务 168
8.2.2需求分析的方法 169
8.3概念结构设计 170
8.4逻辑结构设计 174
8.4.1 E-R图向关系模型的转换 175
8.4.2数据模型的优化 176
8.5物理结构设计 177
8.6数据库实施 178
8.7数据库的运行和维护 179
思考与练习 180
第9章 软件工程概述 181
9.1软件 181
9.1.1软件的定义 181
9.1.2软件的特点 181
9.1.3软件的开发工具和开发环境 182
9.2软件工程 183
9.2.1软件危机 183
9.2.2软件工程的定义 184
9.2.3软件工程的目标和原则 185
9.3软件的生命周期 186
9.3.1软件生命周期的定义 186
9.3.2软件生命周期模型 187
9.4软件工程文档 192
9.4.1软件工程文档的分类 192
9.4.2软件工程文档的作用 193
9.4.3编制规范的软件工程文件 194
思考与练习 196
第10章 软件开发的工程化方法 199
10.1可行性研究分析 199
10.2软件需求分析 200
10.2.1软件需求分析的任务和过程 200
10.2.2软件需求分析的原则 201
10.2.3结构化分析方法 203
10.3软件设计 210
10.3.1软件设计概述 210
10.3.2软件结构化设计方法 213
10.3.3详细设计方法 219
10.3.4面向对象的程序设计概述 224
10.4软件编码 227
10.4.1程序设计语言 228
10.4.2编程风格(Programming Style) 230
思考与练习 232
第11章 软件测试与维护 235
11.1软件测试 235
11.1.1软件测试概述 235
11.1.2软件测试策略 238
11.1.3常用的测试方法 242
11.2软件维护 246
11.2.1软件维护概述 246
11.2.2软件维护的步骤与方法 248
11.2.3软件维护的副作用 249
思考与练习 249
第12章 软件开发的管理 252
12.1软件配置管理 252
12.1.1软件管理的危机 252
12.1.2软件配置管理的定义 253
12.1.3软件配置管理活动 253
12.2质量管理 255
12.2.1软件质量的定义 255
12.2.2软件质量要素 256
12.2.3软件质量评价准则 257
12.2.4软件质量度量 258
12.2.5全面质量管理 258
12.3软件风险管理 260
12.3.1什么是风险 260
12.3.2风险管理 261
12.3.3风险识别 261
12.3.4风险估计 263
12.3.5风险评估 264
12.3.6风险管理策略 266
12.3.7风险驾驭和监控 266
12.4人员管理 268
12.5文档管理 269
思考与练习 269
第13章 操作系统 271
13.1概述 271
13.1.1操作系统的作用 271
13.1.2操作系统功能 272
13.1.3操作系统的发展过程 273
13.1.4操作系统的特点 276
13.2进程管理 277
13.2.1多道程序设计的概念 277
13.2.2进程 279
13.2.3进程控制 281
13.2.4进程调度 282
13.2.5进程通信 286
13.2.6线程 289
13.3存储管理 292
13.3.1存储管理的基本概念及功能 292
13.3.2分区存储管理 294
13.3.3页式存储管理 297
13.3.4段式存储管理 299
13.3.5段页式存储管理方式 300
13.3.6虚拟存储管理 301
13.3.7请求页式存储管理 303
13.4设备管理 308
13.4.1设备管理概述 308
13.4.2 I/O控制方式 310
13.4.3设备分配 311
13.4.4 I/O传输控制 312
13.4.5磁盘调度 313
13.5文件管理 314
13.5.1文件管理的基本概念 314
13.5.2文件结构及存取方式 316
13.5.3文件目录 318
13.5.4文件存储空间的管理 320
13.5.5文件存取控制 321
13.6作业管理 321
13.6.1操作系统用户界面 321
13.6.2作业的基本概念 322
13.6.3作业控制块和后备队列 323
13.6.4作业调度与作业控制 323
13.6.5 Unix操作系统简介 325
思考与练习 326
参考文献 327