《计算机软件技术基础 高级程序设计》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:刘彦明,荣政编
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2005
  • ISBN:7115130280
  • 页数:333 页
图书介绍:本书系统地介绍高级程序设计方法以及程序实现的两个关键:数据结构和算法设计。

目录 1

第1章 概述 1

1.1 软件的基本概念 1

1.1.1 软件应用 1

1.1.2 软件危机与神话 2

1.2 软件技术 4

1.3 程序设计技术 5

1.3.1 明确需求 5

1.3.2 设计 6

1.3.3 编码 8

1.4 程序性能考虑 9

1.3.4 测试 9

1.5 数据结构与算法设计 10

1.5.1 数据结构的引入 10

1.5.2 数据结构的基本概念 12

1.5.3 数据结构与算法 14

1.5.4 算法及其复杂性 16

1.6 设计程序所需的基础知识和基本能力 18

习题 19

第2章 高级程序设计方法 20

2.1 引言 20

2.2 程序设计的关键技术 21

2.2.1 程序结构设计 21

2.2.2 模块设计 25

2.3 程序设计步骤 26

2.4 程序设计实例 28

2.4.1 问题与分析 28

2.4.2 处理问题的流程与问题分解 29

2.4.3 程序结构 31

2.4.4 模块设计 32

2.4.5 数据结构设计 33

2.4.6 程序的实现 34

2.4.7 完整程序 39

习题 51

3.1 命名 53

第3章 编写好程序 53

3.2 表达式和语句 54

3.3 一致性和习惯用法 57

3.4 函数宏 59

3.5 神秘的数 60

3.6 注释 61

3.7 界面 64

3.7.1 一个原型库 65

3.7.2 通用函数库设计 68

3.7.3 界面原则 75

3.7.4 资源管理 78

3.7.5 用户界面 78

习题 79

第4章 排错与测试 82

4.1 排错 82

4.1.1 排错系统 83

4.1.2 寻找错误线索 84

4.1.3 无线索,难办的错误 86

4.1.4 最后的手段 89

4.1.5 不可重现的错误 90

4.1.6 其他人的程序错误 91

4.2 测试 92

4.2.1 在编码过程中测试 93

4.2.2 系统化测试 95

4.2.3 测试自动化 97

4.2.4 测试环境 98

4.2.5 应力测试 98

4.2.6 测试秘诀 100

4.2.7 测试用例设计的一般原则 101

4.2.8 测试用例设计的具体方法 102

习题 105

第5章 程序性能 108

5.1 瓶颈 109

5.2 计时与轮廓 113

5.2.1 自动计时测量 113

5.3 加速策略 114

5.2.2 使用轮廓程序 114

5.4 代码调整 116

5.5 存储优化 119

习题 120

第6章 线性表 121

6.1 线性表的基本概念及运算 121

6.2 顺序表 123

6.2.1 顺序表的基本运算 124

6.2.2 顺序表的应用实例——学生学籍档案管理 126

6.3 链表 128

6.3.1 单链表 129

6.3.2 单链表的基本运算 130

6.3.3 循环链表 136

6.3.4 双向链表 137

6.3.5 链表应用实例——多项式的表示及运算 139

习题 142

第7章 串和数组 144

7.1 串及其运算 144

7.2 串的存储结构 146

7.3 串运算的实现 149

7.3.1 基本运算的实现 149

7.3.2 改进的模式匹配算法 153

7.4 数组的定义和运算 155

7.5 数组的顺序存储结构 156

7.6.1 特殊矩阵 158

7.6 矩阵的压缩存储 158

7.6.2 稀疏矩阵 159

习题 161

第8章 栈和队列 164

8.1 栈 164

8.1.1 栈的顺序存储表示——顺序栈 165

8.1.2 栈的链式存储结构——链栈 167

8.1.3 栈的应用 168

8.2 队列 173

8.2.1 队列的存储结构 174

8.2.2 队列应用举例 179

习题 184

第9章 树 186

9.1 树的基本概念 186

9.2 二叉树 187

9.3 叉树的存储结构 189

9.3.1 顺序存储结构 189

9.3.2 链式存储结构 191

9.3.3 二叉树建立 191

9.4 二叉树的遍历 193

9.4.1 二叉树的深度优先遍历 193

9.4.2 二叉树的广度优先遍历 195

9.4.3 深度优先的非递归算法 196

9.4.4 从遍历序列恢复二叉树 197

9.4.5 遍历算法的应用 199

9.5 树和森林 200

9.5.1 树的存储结构 200

9.5.2 树、森林和二叉树之间的转换 202

9.6 线索二叉树 203

9.6.1 线索二叉树的建立 203

9.6.2 访问线索二叉树 205

9.7 二叉树的应用 207

9.7.1 哈夫曼树及应用 207

9.7.2 二叉排序树 215

习题 219

10.1 图的基本概念 222

第10章 图 222

10.2 图的存储方法 224

10.2.1 邻接矩阵 224

10.2.2 邻接表 226

10.3 图的遍历 228

10.3.1 深度优先搜索遍历 228

10.3.2 广度优先搜索遍历 230

10.4 生成树和最小生成树 232

10.5 最短路径 238

10.5.1 从某个源点到其余各顶点的最短路径 238

10.5.2 每一对顶点之间的最短路径 242

10.6 拓扑排序 244

10.7 关键路径 249

习题 253

第11章 索引结构与散列技术 256

11.1 索引结构 256

11.1.1 线性索引 256

11.1.2 倒排表 258

11.1.3 多级索引 259

11.2 散列技术 259

11.2.1 散列表的概念 260

11.2.2 散列函数的构造 261

11.2.3 解决冲突的几种方法 263

11.2.4 散列表的查找及分析 266

习题 268

第12章 缩小规模算法 271

12.1 分治与递归算法 271

12.1.1 递归算法设计 271

12.1.2 分治算法设计 273

12.2 动态规划 281

12.2.1 动态规划算法的基本要素 285

12.2.2 动态规划应用——图像压缩 287

12.2.3 最优二叉搜索树 289

12.3 贪心算法 292

12.3.1 贪心算法与动态规划算法的差异 293

12.3.2 贪心算法应用之哈夫曼编码 295

12.3.3 贪心算法应用之单源最短路径 297

习题 298

第13章 搜索算法 301

13.1 回溯法 301

13.1.1 回溯法的算法框架 301

13.1.2 最大团问题 305

13.1.3 图的m着色问题 307

13.1.4 旅行售货员问题 309

13.2 分支界限法 310

13.2.1 分支界限法的基本思想 310

13.2.2 装载问题 311

13.2.3 布线问题 316

习题 319

第14章 “难”问题求解算法 321

14.1 概率算法 321

14.1.1 数值概率算法 322

14.1.2 舍伍德算法 323

14.1.3 拉斯维加斯算法 325

14.1.4 蒙特卡罗算法 326

14.2 近似算法 328

14.2.1 顶点覆盖问题的近似算法 328

14.2.2 旅行售货员问题的近似算法 329

14.2.3 集合覆盖问题的近似算法 331

习题 332

参考文献 333