第1章 计算机软件技术基础概论 1
1.1 计算机基础 1
1.1.1 计算机的发展概况 1
1.1.2 计算机的基本组成 2
1.1.3 计算机的应用 4
1.2 计算机软件基础 5
1.2.1 计算机软件的基本概念 5
1.2.2 计算机语言 6
1.3 计算机软件技术的发展 6
1.4 软件的设计方法 7
1.5 程序设计的基本算法与应用 8
1.5.1 迭代法与应用 8
1.5.2 递推法与应用 9
1.5.3 递归法与应用 10
1.5.4 穷举法与应用 11
1.5.5 回溯法与应用 12
1.5.6 贪婪法与应用 13
1.5.7 分治法与应用 14
1.6 习题 16
第2章 数据结构概述 17
2.1 数据结构基本知识 17
2.1.1 数据结构的概念 17
2.1.2 数据的逻辑结构与存储结构 19
2.1.3 数据类型与抽象数据类型 20
2.2 算法分析 21
2.2.1 算法的概念 21
2.2.2 时间复杂度和空间复杂度的概念 21
2.2.3 算法的描述 23
2.3 习题 25
第3章 线性结构 27
3.1 线性表顺序存储及运算 27
3.1.1 线性表的基本概念 27
3.1.2 顺序表的基本概念和结构特征 28
3.1.3 顺序表的算法 29
3.1.4 顺序表算法编程实例 31
3.2 栈及其应用 33
3.2.1 栈的基本概念和结构特征 33
3.2.2 栈的基本运算 34
3.2.3 栈的应用 36
3.3 队列及其应用 40
3.3.1 队列的基本概念和结构特征 40
3.3.2 队列的基本运算 41
3.3.3 队列的应用 42
3.4 线性链表及其运算 45
3.4.1 链表的基本概念和结构特征 45
3.4.2 单链表 46
3.4.3 线性链表算法编程实例 51
3.5 其他线性结构 53
3.5.1 串的定义和串的存储方式 53
3.5.2 定长顺序串运算 55
3.5.3 二维数组的结构特点和存储方式 58
3.5.4 矩阵和特殊矩阵元素的存储结构与应用实例 64
3.5.5 稀疏矩阵的压缩存储方式和简单运算实例 66
3.6 习题 67
第4章 树 71
4.1 树的概念 71
4.1.1 树结构数据举例 71
4.1.2 树的定义 72
4.1.3 树的基本术语 73
4.2 二叉树的基本概念和主要性质 74
4.2.1 二叉树的基本概念 74
4.2.2 二叉树的主要性质 75
4.3 二叉树的存储 75
4.3.1 顺序存储方式 75
4.3.2 链式存储方式 77
4.4 二叉树的遍历 77
4.4.1 二叉树遍历的概念 77
4.4.2 二叉树遍历的算法 78
4.4.3 二叉树遍历算法应用举例 79
4.5 二叉树的应用 80
4.6 树与森林 85
4.6.1 树的存储方法 85
4.6.2 树和森林与二叉树的转换 86
4.6.3 树与森林的遍历 88
4.7 习题 89
第5章 图 91
5.1 图的基本概念 91
5.2 图的存储结构 93
5.2.1 邻接矩阵 93
5.2.2 邻接表 94
5.3 图的遍历 95
5.3.1 深度优先搜索 96
5.3.2 广度优先搜索 97
5.4 图的应用 98
5.4.1 生成树和最小生成树 98
5.4.2 最短路径 100
5.4.3 AOV网与拓扑排序 104
5.5 习题 106
第6章 查找 110
6.1 查找的基本概念 110
6.1.1 查找的相关概念 110
6.1.2 查找的基本思想 111
6.2 查找方法和算法 111
6.2.1 顺序查找 111
6.2.2 有序表的二分查找 112
6.2.3 分块查找 114
6.3 二叉排序树的查找算法 116
6.3.1 二叉排序树的基本概念 116
6.3.2 二叉排序树的运算 117
6.4 散列表查找 122
6.4.1 散列表的基本概念 122
6.4.2 常用的散列函数的构造方法 123
6.4.3 处理冲突的方法 124
6.5 习题 127
第7章 内部排序 132
7.1 排序的基本思想和基本概念 132
7.2 内部排序的主要算法及时空效率分析 133
7.2.1 直接插入排序 134
7.2.2 希尔排序 136
7.2.3 冒泡排序 137
7.2.4 直接选择排序 139
7.2.5 归并排序 141
7.2.6 快速排序 142
7.2.7 堆排序 145
7.3 内部排序实例 148
7.4 习题 150
第8章 操作系统 153
8.1 操作系统的形成与发展 153
8.1.1 “手工操作”阶段 153
8.1.2 联机批处理 153
8.1.3 脱机批处理 154
8.1.4 执行系统 154
8.2 操作系统的定义、特征和功能 154
8.2.1 操作系统的定义 154
8.2.2 操作系统的特征 155
8.2.3 操作系统的功能 155
8.3 操作系统的分类 156
8.3.1 批处理操作系统 156
8.3.2 分时操作系统 157
8.3.3 实时操作系统 158
8.3.4 网络操作系统 158
8.3.5 分布式操作系统 158
8.4 处理机管理 158
8.4.1 多道程序设计的概念 159
8.4.2 进程的概念 159
8.4.3 进程的并发控制 162
8.4.4 进程通信 164
8.4.5 死锁 165
8.5 存储管理 167
8.5.1 存储管理概述 167
8.5.2 地址重定位 168
8.5.3 实存储器管理技术 169
8.5.4 虚拟存储管理技术 171
8.6 文件管理 174
8.6.1 文件系统概述 174
8.6.2 文件的结构 174
8.6.3 文件目录 177
8.6.4 存储空间的分配 178
8.7 习题 181
第9章 软件工程 182
9.1 软件工程概述 182
9.1.1 软件工程的形成和发展 182
9.1.2 软件工程的内容和目的 183
9.1.3 软件生命周期 184
9.1.4 软件过程模型 185
9.2 软件的需求定义 190
9.2.1 软件可行性研究 190
9.2.2 需求分析定义概述 191
9.2.3 结构化分析方法 192
9.2.4 数据流图 193
9.2.5 数据字典 194
9.2.6 加工规格说明 195
9.3 软件设计 196
9.3.1 软件设计概述 196
9.3.2 软件设计原则 197
9.3.3 软件设计方法 198
9.4 软件编程 201
9.4.1 软件编程概述 201
9.4.2 软件编程风格 201
9.5 软件测试 202
9.5.1 软件测试概述 202
9.5.2 测试用例的设计 203
9.5.3 软件测试步骤 205
9.6 软件维护 206
9.7 习题 206
第10章 数据库技术 207
10.1 数据库系统概述 207
10.1.1 数据管理技术的产生和发展 207
10.1.2 数据库系统基本术语 209
10.1.3 数据模型 209
10.2 关系数据库基本理论 212
10.2.1 关系的定义 213
10.2.2 关系模型的常用术语 215
10.2.3 关系代数 216
10.2.4 关系的完整性 220
10.3 数据库系统结构 221
10.3.1 数据库的三级模式 221
10.3.2 数据库的两级映像 222
10.4 数据库设计 222
10.4.1 数据库设计过程 223
10.4.2 需求分析 223
10.4.3 概念结构设计 224
10.4.4 逻辑结构设计 226
10.4.5 物理结构设计 229
10.4.6 数据库实施 230
10.4.7 数据库运行与维护 230
10.5 关系模式的规范化 230
10.5.1 问题的提出 230
10.5.2 函数依赖和键 231
10.5.3 关系模式的范式与规范化 232
10.6 SQLServer使用初步 234
10.6.1 SQLServer的管理工具和使用方法 234
10.6.2 数据库中主要对象 237
10.6.3 SQL初步 238
10.7 习题 245
附录 软件技术基础实验 248
实验一 斐波那契数列的实现算法及分析 248
实验二 顺序表的实现和应用 249
实验三 链表的实现和应用 251
实验四 栈的实现和应用 253
实验五 二叉树的创建和遍历 254
实验六 哈夫曼树及哈夫曼编码 257
实验七 查找算法的实现 259
实验八 内部排序算法的实现 267
实验九 数据库应用 269
参考文献 270