《算法与程序设计基础教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:文风,孙旭编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302213611
  • 页数:302 页
图书介绍:本书在脱离具体语言环境下,围绕程序设计的中心问题——如何分析解决实际问题、如何构思算法,简明扼要地介绍了程序设计中的基本概念、基本思想、基本技术和基本方法。

第1章 绪论 1

1.1程序=数据结构+算法 1

1.1.1程序 1

1.1.2什么是数据结构 1

1.1.3什么是算法 5

1.2程序设计=数据结构+算法+程序设计方法 6

1.2.1程序设计 7

1.2.2程序设计方法学 7

1.3语言工具和环境 11

1.3.1程序设计语言 11

1.3.2程序设计范型 13

1.3.3程序设计语言的语法元素及其元素功能 14

1.3.4编程环境和程序运行 15

1.4程序设计步骤与程序设计风格 17

1.4.1程序设计步骤 17

1.4.2程序设计风格 18

1.5算法设计与分析 19

1.5.1算法描述 19

1.5.2算法设计举例 22

1.5.3算法设计的要求 26

1.5.4算法分析 26

1.6课程设计相关知识 28

1.6.1课程设计目的与内涵 28

1.6.2课程设计步骤 28

1.6.3课程设计报告规范 29

1.7课程设计题目——求最大公因子 30

习题 30

第2章 简单数据类型与表达式 32

2.1数据类型 32

2.1.1基本概念和术语 32

2.1.2数据类型与数据结构 33

2.1.3简单数据类型 33

2.1.4构造数据类型 34

2.2常量与变量 35

2.2.1常量 35

2.2.2变量 37

2.3运算符与表达式 39

2.3.1算术运算符与算术表达式 39

2.3.2字符运算符与字符表达式 41

2.3.3关系运算符与关系表达式 41

2.3.4逻辑运算符与逻辑表达式 42

2.4课程设计题目——求最小公倍数 45

习题 45

第3章 程序的基本控制结构 47

3.1程序的基本控制结构介绍 47

3.1.13种基本控制结构 47

3.1.2关于对GOTO语句的认识 49

3.2顺序结构程序设计 50

3.3选择结构程序设计 53

3.3.1单向分支选择结构程序设计 54

3.3.2双向分支选择结构程序设计 56

3.3.3多向分支选择结构程序设计 60

3.4循环结构程序设计 62

3.4.1当型循环结构程序设计 63

3.4.2直到型循环结构程序设计 66

3.4.3步长型循环结构程序设计 68

3.5课程设计题目——求解方程的根 73

习题 74

第4章 构造数据类型 76

4.1数组类型 76

4.1.1一维数组 76

4.1.2二维数组 79

4.1.3查找 83

4.1.4排序 87

4.2结构体类型 92

4.2.1结构体类型的概念 92

4.2.2结构体类型的定义 92

4.2.3结构体变量的说明 93

4.2.4结构体变量的引用 94

4.2.5结构体应用举例 95

4.3其他构造数据类型 102

4.3.1共用体类型 102

4.3.2文件类型 105

4.4抽象数据类型 112

4.5课程设计题目——排序算法 113

习题 114

第5章 结构化程序设计 116

5.1结构化方法概述 116

5.2模块化设计技术与方法 117

5.2.1模块化的一般目标 117

5.2.2模块凝聚(聚合)与模块耦合(关联) 117

5.2.3模块的设计准则 118

5.3自顶向下设计技术与方法 120

5.3.1自顶向下设计 121

5.3.2自顶向下编码 121

5.4逐步求精设计技术与方法 122

5.4.1选择排序算法的逐步求精设计过程 122

5.4.2积木游戏算法的逐步求精设计过程 125

5.5结构程序优化技术和方法 129

5.5.1问题模型的优化 129

5.5.2计算方法的优化 130

5.5.3算法的优化 132

5.5.4数据结构的优化 132

5.6子程序与过程文件 133

5.6.1子程序 133

5.6.2过程文件 133

5.6.3过程应用举例 134

5.7函数 139

5.7.1函数的定义和调用 139

5.7.2函数的嵌套调用和递归调用 141

5.7.3函数应用举例 144

5.8课程设计题目——学生成绩管理系统 149

习题 150

第6章 基本数据结构 151

6.1顺序表 151

6.1.1向量的顺序存储表示 152

6.1.2向量的运算 152

6.1.3应用举例 158

6.2链表 160

6.2.1指针与指针对象 161

6.2.2单链表 163

6.2.3应用举例 171

6.3栈 174

6.3.1栈的概念 174

6.3.2顺序栈 175

6.3.3链接栈 178

6.4递归与非递归过程 180

6.4.1递归的概念 180

6.4.2递归过程(函数)设计 182

6.4.3递归过程与非递归过程 183

6.5队列 187

6.5.1队列的概念 187

6.5.2顺序队列 187

6.5.3链接队列 190

6.6二叉树 194

6.6.1树的基本概念 194

6.6.2二叉树介绍 195

6.6.3二叉树的存储表示 197

6.6.4二叉树的遍历 198

6.7课程设计题目——一元多项式计算器 209

习题 210

第7章 算法设计中的常用方法 213

7.1问题的解空间 213

7.2枚举法 214

7.2.1枚举法的基本思想 215

7.2.2枚举法应用举例 215

7.2.3枚举算法的优化 217

7.3递归与递推 223

7.3.1梵天塔问题 223

7.3.2再谈递归算法设计 224

7.3.3快速排序 225

7.3.4递推算法 229

7.3.5Wythoff数对序列 232

7.4分治法 235

7.4.1分治法概述 235

7.4.2数字旋转方阵 236

7.4.3最大子段和问题 238

7.5动态规划法 242

7.5.1动态规划法概述 242

7.5.2多段图的最短路径问题 243

7.5.3 0-1背包问题 246

7.6贪心法 249

7.6.1贪心法概述 249

7.6.2背包问题 250

7.6.3 0-1背包问题及贪心k阶优化方法 252

7.7回溯法 254

7.7.1回溯法概述 254

7.7.2 0-1背包问题与回溯递归算法 255

7.7.3 0-1背包问题与回溯迭代算法 258

7.8分支限界法 261

7.8.1分支限界法概述 261

7.8.2分支限界法求解0-1背包问题 263

7.9课程设计题目——0-1背包问题 267

习题 268

第8章 以解决问题为中心 270

8.1一元多项式问题 270

8.1.1问题描述 270

8.1.2问题分析 270

8.1.3算法设计 272

8.1.4C语言程序实现与程序运行 274

8.2八皇后问题 277

8.2.1问题描述 277

8.2.2问题分析 277

8.2.3算法设计 277

8.2.4C语言程序实现与程序运行 282

8.2.5VFP语言程序实现与程序运行 284

8.3骑士游历问题 286

8.3.1问题描述 286

8.3.2问题分析与算法设计 286

8.3.3C语言程序实现与程序运行 288

8.4哈夫曼树与哈夫曼编码 290

8.4.1问题描述 290

8.4.2问题分析与算法设计 292

8.4.3C语言程序实现与程序运行 295

8.5课程设计题目——哈夫曼编/译码系统 298

习题 299

参考文献 300