第1篇 数据结构 1
第1章 数据结构概述 1
1.1 数据结构概述 1
1.2 数据结构的意义 3
1.3 算法分析 4
第2章 线性表 8
2.1 线性表的基本概念 8
2.2 线性表的顺序存储结构 8
2.3 线性表的链式存储结构 11
2.3.1 单链表 12
2.3.2 循环链表 15
2.3.3 双链表 17
2.4 顺序表和链表的比较 19
2.5 线性表应用实例 20
2.5.1 多项式相加问题 20
2.5.2 Josephus 24
第3章 栈与队列 29
3.1 栈 29
3.1.1 栈的定义 29
3.1.2 栈的基本运算 29
3.1.3 顺序栈 30
3.1.4 链栈 32
3.2 栈与递归 34
3.3 栈应用实例 35
3.4.1 队列的定义 38
3.4.2 队列的基本运算 38
3.4 队列 38
3.4.3 顺序队列 39
3.4.4 链队列 42
3.5 队列应用实例 45
第4章 树与图 51
4.1 树 51
4.2 二叉树 52
4.2.1 二叉树概述 52
4.2.2 二叉树的存储结构 53
4.2.3 二叉树的遍历 54
4.3 树的应用实例 60
4.3.1 二叉排序树 60
4.3.2 判定树 63
4.4.1 66
4.4 图 66
4.4.2 68
4.4.3 71
第5章 查找与排序 76
5.1 查找概述 76
5.2 线性表的查找 77
5.2.1 顺序查找 77
5.2.2 二分查找 80
5.2.3 分块查找 82
5.3 树型查找 84
5.4 散列查找 86
5.4.1 散列函数的构造 87
5.4.2 处理冲突的方法 90
5.4.3 散列表的查找 92
5.5 排序概述 96
5.6.1 直接插入排序 97
5.6 插入排序 97
5.6.2 二分插入排序 99
5.6.3 希尔排序 101
5.7 选择排序 102
5.7.1 直接选择排序 102
5.7.2 堆排序 104
5.8 交换排序 107
5.8.1 起泡排序 107
5.8.2 快速排序 109
第6章 操作系统概论 113
6.1 操作系统概述 113
第二篇 操作系统 113
6.2 操作系统的特性 117
6.3 操作系统的类型 118
6.3.1 批处理系统 119
6.3.2 分时系统 121
6.3.3 实时系统 122
6.3.4 通用操作系统 124
6.3.5 单用户交互式系统 125
6.3.6 分布式操作系统 125
6.4 操作系统的结构 128
6.4.1 单体结构 129
6.4.2 模块分层结构 130
6.4.3 客户-服务器模式 132
7.1.1 程序的顺序执行 134
7.1 进程的概念 134
第7章 进程管理与处理机管理 134
7.1.2 程序的并行执行 135
7.1.3 进程的概念 136
7.2 进程的状态和转换 138
7.3 进程的表示 139
7.4 进程的控制 142
7.5 进程通讯 148
7.5.1 临界资源和临界区 148
7.5.2 进程通讯方式之一——同步与互斥 148
7.5.3 进程通讯方式之二——消息缓冲 153
7.6 死锁 154
7.6.1 死锁产生的原因和必要条件 155
7.6.2 死锁的预防 156
7.6.3 死锁的检测和解除 157
7.7 处理机管理概述 159
7.8 作业调度 162
7.9 进程调度 164
7.10 调度算法 165
7.10.1 先进先出(FCFS)调度算法 166
7.10.2 最高优先级(HPF)调度算法 167
7.10.3 轮转法RR 169
7.10.4 均衡调度算法 170
7.10.5 最短作业优先(SF)调度算法 171
7.10.6 响应比最高者优先(HRN)调度算法 171
第8章 存储管理 173
8.1 单一边续区分配 173
8.2.1 固定式分区 176
8.2 分区分配 176
8.2.2 可变式分区 177
8.3 分页分配 184
8.3.1 实现原理 184
8.3.2 分责分配的算法 187
8.3.3 虚拟存储管理 189
8.4 分段分配 191
第9章 设备与文件管理 193
9.1 设备管理 193
9.1.1 设备管理概述 193
9.1.2 设备控制方式 195
9.1.3 缓冲技术 199
9.1.4 设备分配 200
9.2.1 文件和文件系统 203
9.2 文件管理 203
9.2.2 文件结构和存取方法 208
9.2.4 文件存储间的管理 215
9.2.5 文件的共享和存取控制 216
第10章 操作系统实例——Windows95 218
10.1 Windows95操作系统概述 218
10.1.1 微机操作系统的发展过程 218
10.1.2 Windows95的性能 220
9.2.3 文件目录及其管理 221
10.1.3 基于API的Windows95结构 222
10.2 Windows95的进程与线程 224
10.2.1 Windows95的进程 224
10.2.2 Windows95的线程 225
10.3 Windows95的内存管理 227
10.3.1 Windows95的内存寻址模式 227
10.2.3 Windows95进程与线程的关系 227
10.3.2 Windows95的内存映像文件 228
10.3.3 Windows95的内存虚拟内存管理 230
10.4 Windows95的内部结构 234
10.4.1 虚拟机结构 234
10.4.2 Windows95的启动过程 239
第3篇 软件工程 241
第11章 软件工程概述 241
11.1 计算机软件概况 241
11.1.1 软件的含义 241
11.2.1 软件危机的表现形式 243
11.1.2 软件的发展 243
11.2 软件危机 243
11.2.2 软件危机产生的原因 244
11.2.3 软件危机的解决办法 246
11.3 软件工程 247
11.3.1 软年工程原理 247
11.3.2 软件工程 249
第12章 软件分析 255
12.1 定义系统目标 255
12.2 可行性研究 257
12.2.1 可行性研究的任务 257
12.2.2 可行性研究的内容 258
12.2.3 可行性研究步骤 258
12.3.1 需求分析的特点 261
12.3 需求分析 261
12.3.2 需求分析的具体任务 262
12.3.3 需求分析的实施 263
12.4 软件分析的方法 265
12.4.1 结构分析方法(SA法)概述 265
12.4.2 数据流程图 267
12.4.3 数据字典 271
12.4.4 面向对象的分析方法与应用 276
第13章 软件设计 287
13.1 软件设计的基本思想 287
13.1.1 模块化 287
13.1.2 信息隐蔽 288
13.1.3 抽象 289
13.1.4 模块独立 290
13.1.5 总体设计与模块细部设计相对分开 292
13.2 面向控制结构的设计方法 294
13.2.1 模块化程序设计 294
13.2.2 自顶向下的功能分解法 296
13.2.3 基于数据流分析的设计方法 297
13.2.4 基于数据结构的设计方法 299
13.2.5 HIPO方法 301
13.3 面向对象的设计方法 302
13.3.1 面向对象的模块分解 302
13.3.2 面向对象设计方法的特点 304
13.3.3 实例——班轮管理系统设计 304
14.1 程序设计语言 313
14.1.1 程序设计语言 313
第14章 软件编码与测试 313
14.1.2 程序设计质量 317
14.2 软件测试 321
14.2.1 软件测试的原则 322
14.2.2 软件测试方法 323
14.2.3 测试用例设计 325
14.2.4 软件测试过程步骤 333
14.3 软件调试 335
14.3.1 调试技术 336
14.3.2 调试策略 337
第15章 软件维护 340
15.1 软件维护的内容与分类 340
15.1.1 软件维护的内容 340
15.1.2 软件维护的分类 341
15.2 软件维护方法 342
15.2.1 理解程序的方法 342
15.2.2 修改程序的方法 343
15.2.3 重新确认程序的方法 347
15.3 软件维护过程 348
15.3.1 建立维护组织 348
15.3.2 编写维护报告 349
15.3.3 维护作业流程 349
15.3.4 保存维护记录 352
15.3.5 评价维护活动 353
15.4 维护的副作用 354
15.4.1 修改编码的副的作用 354
15.4.2 修改数据的副作用 355
15.4.3 文档资料的副作用 356