《程序设计基础与数据结构》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:戚桂杰,姚云鸿主编
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:9787302160687
  • 页数:392 页
图书介绍:本书介绍程序设计基础与数据结构的相关知识。

第1章 程序设计的基本概念 1

1.1 程序设计和程序设计语言 1

1.1.1 程序与软件 1

1.1.2 程序设计语言的发展 2

1.1.3 计算机如何运行程序 2

1.2 C语言概述 4

1.2.1 C语言的发展 4

1.2.2 C程序的结构 4

1.2.3 C语言字符集 6

1.2.4 C语言的特点 7

1.3 算法 8

1.3.1 问题求解过程 8

1.3.2 算法及其表示 9

1.3.3 简单算法举例 9

1.3.4 用流程图表示算法 11

1.3.5 三种基本算法结构和改进的流程图 13

1.3.6 用N-S流程图表示算法 14

1.3.7 用伪代码表示算法 16

1.3.8 用计算机语言表示算法 17

1.4 结构化程序设计方法 18

1.5 本章小结 18

习题1 19

第2章 数据类型、运算符与表达式 20

2.1 C语言的数据类型 20

2.2 标识符 21

2.3 常量与变量 22

2.3.1 常量和符号常量 22

2.3.2 变量 23

2.4 整型数据 23

2.4.1 整型常量的表示方法 23

2.4.2 整型变量 24

2.5 实型数据 27

2.5.1 实型常量的表示方法 27

2.5.2 实型变量 28

2.5.3 实型常量的类型 29

2.6 字符型数据 29

2.6.1 字符常量 29

2.6.2 转义字符 29

2.6.3 字符变量 30

2.6.4 字符数据在内存中的存储形式及使用方法 30

2.6.5 字符串常量 32

2.7 变量赋初值 32

2.8 各类数值型数据之间的混合运算 32

2.8.1 自动类型转换 33

2.8.2 强制类型转换 33

2.9 算术运算符和算术表达式 34

2.9.1 C运算符简介 34

2.9.2 算术运算符和算术表达式 35

2.10 赋值运算符和赋值表达式 37

2.10.1 赋值运算符 37

2.10.2 类型转换 37

2.10.3 复合的赋值运算符 38

2.11 逗号运算符和逗号表达式 38

2.12 本章小结 39

习题2 40

第3章 C程序语句 42

3.1 C程序语句概述 42

3.2 顺序程序设计 43

3.2.1 数据输入输出的概念及在C语言中的实现 44

3.2.2 字符数据的输入输出 44

3.2.3 格式输入与输出 46

3.2.4 顺序结构程序设计举例 50

3.3 选择结构程序 51

3.3.1 关系运算符和关系表达式 51

3.3.2 逻辑运算符和表达式 53

3.3.3 if语句 54

3.3.4 switch语句 59

3.3.5 程序举例 61

3.4 循环控制 62

3.4.1 概述 62

3.4.2 goto语句以及用goto语句构成循环 62

3.4.3 while语句 63

3.4.4 do-while语句 64

3.4.5 for语句 66

3.4.6 循环的嵌套 68

3.4.7 几种循环的比较 68

3.4.8 break和continue语句 69

3.4.9 程序举例 71

3.5 本章小结 72

习题3 73

第4章 函数与数组 74

4.1 函数概述 74

4.2 函数定义的一般形式 75

4.2.1 类型标识符与return语句 75

4.2.2 形式参数和实际参数 76

4.3 函数调用 78

4.3.1 函数调用的一般形式 78

4.3.2 函数嵌套调用与递归调用 79

4.4 函数作用域规则 82

4.4.1 局部变量与外部变量 83

4.4.2 动态存储变量与静态存储变量 86

4.4.3 内部和外部函数的说明 88

4.5 数组 89

4.5.1 一维数组 89

4.5.2 二维数组 91

4.5.3 数组应用程序举例 92

4.5.4 字符数组 94

4.6 预处理命令 98

4.6.1 宏定义 98

4.6.2 文件包含 104

4.6.3 条件编译 104

4.7 本章小结 106

习题4 107

第5章 指针与结构体 109

5.1 指针概述 109

5.1.1 指针是地址 109

5.1.2 指针变量及其定义 110

5.1.3 指针变量作函数参数 111

5.2 数组与指针 115

5.2.1 一维数组与指针 116

5.2.2 多维数组与指针 119

5.2.3 字符串与指针 122

5.2.4 指针数组 124

5.3 指针与函数 127

5.3.1 函数指针变量 127

5.3.2 指针型函数 129

5.3.3 多级指针 130

5.3.4 指针数组作main()的参数 132

5.4 结构体 133

5.4.1 结构体类型的定义 133

5.4.2 结构体类型变量的定义 133

5.4.3 结构体变量的引用 135

5.4.4 结构体变量的初始化 136

5.4.5 结构体数组 136

5.4.6 结构体与指针 138

5.5 共用体 139

5.5.1 共用体的概念 139

5.5.2 共用体变量的引用 140

5.6 其他数据类型 141

5.6.1 枚举类型 141

5.6.2 类型定义符typedef 143

5.7 位操作 144

5.7.1 位运算 145

5.7.2 位段 147

5.8 本章小结 149

习题5 150

第6章 文件 153

6.1 文件概述 153

6.1.1 与文件有关的概念 153

6.1.2 文件指针 154

6.2 文件的打开与关闭 155

6.2.1 文件的打开(fopen函数) 155

6.2.2 文件关闭 157

6.3 文件的输入输出  158

6.3.1 读写文件中字符的函数 158

6.3.2 数据块读写函数fread()和fwrite() 161

6.3.3 字符串读写函数fgets()和fputs() 163

6.3.4 格式读写函数fscanf()和fprintf() 165

6.3.5 其他输入输出函数 166

6.4 文件的定位 167

6.4.1 ftell()函数 167

6.4.2 文件头复位函数rewind() 167

6.4.3 文件的随机定位函数fseek() 168

6.5 出错的检测 169

6.6 典型实例 169

6.7 常见的编程错误 173

6.8 本章小结 173

习题6 174

第7章 大型程序的设计与调试 175

7.1 大型程序的开发过程 175

7.1.1 需求分析 175

7.1.2 软件设计的任务 176

7.1.3 编码 177

7.1.4 软件测试 179

7.2 大型程序的设计原理 179

7.2.1 使用抽象管理复杂性 180

7.2.2 自顶而下、逐步求精的设计策略 181

7.2.3 模块化程序设计 181

7.2.4 重用代码 184

7.3 C语言大型程序的几种开发机制 184

7.3.1 模块的实现 184

7.3.2 多模块程序的编译、连接 187

7.3.3 标识符的连接属性 188

7.3.4 条件编译 191

7.4 大型程序的测试 191

7.4.1 测试技术 192

7.4.2 测试步骤 194

7.4.3 调试 195

7.5 程序设计实例 196

7.5.1 链表简介 196

7.5.2 需求分析 197

7.5.3 总体设计 197

7.5.4 函数设计 198

7.5.5 头文件设计 199

7.5.6 算法分析 200

7.5.7 实现文件设计 201

7.5.8 测试  205

7.6 本章小结 209

习题7 209

第8章 数据结构基本概念 211

8.1 数据结构实例 211

8.2 基本概念和术语 213

8.2.1 数据 213

8.2.2 数据结构 214

8.2.3 存储结构 215

8.2.4 抽象数据类型 216

8.2.5 抽象数据类型的表示与实现 217

8.3 算法的评价 220

8.4 本章小结 221

习题8 221

第9章 线性结构 223

9.1 线性结构概述 223

9.2 线性表的类型定义 224

9.2.1 线性表的定义 224

9.2.2 线性表的抽象数据类型定义 224

9.3 线性表的顺序表示和实现 225

9.4 线性表的链式表示和实现 230

9.5 线性表的其他链式表示 235

9.5.1 静态链表 235

9.5.2 循环链表 238

9.5.3 双向链表 238

9.6 线性表的应用举例 239

9.7 栈 243

9.7.1 栈的定义 243

9.7.2 栈的抽象数据类型定义 243

9.7.3 栈的顺序表示和实现 244

9.7.4 栈的链式表示和实现 247

9.8 栈的应用举例 249

9.8.1 数制转换 249

9.8.2 迷宫问题 250

9.8.3 栈与递归——汉诺塔问题 253

9.9 队列 257

9.9.1 队列的定义 257

9.9.2 队列的抽象数据类型定义 258

9.9.3 队列的顺序表示和实现 259

9.9.4 队列的链式表示和实现 261

9.10 队列的应用举例 264

9.11 本章小结 266

习题9 266

第10章 树和二叉树 269

10.1 树 269

10.1.1 树的定义 269

10.1.2 树的基本术语 271

10.1.3 树的性质 272

10.1.4 树的表示 273

10.2 二叉树 273

10.2.1 二叉树的定义 273

10.2.2 二叉树的性质 274

10.2.3 二叉树的表示和实现 276

10.3 线索二叉树 287

10.4 树和森林 289

10.4.1 树的存储结构 289

10.4.2 森林和二叉树的转化 291

10.4.3 树和森林的遍历 293

10.5 霍夫曼树及其应用 293

10.5.1 基本术语 293

10.5.2 霍夫曼树的构造 294

10.5.3 霍夫曼树的应用 296

10.6 本章小结 297

习题10 298

第11章 排序 301

11.1 概述 301

11.2 插入排序 302

11.2.1 直接插入排序 302

11.2.2 改进的插入排序 303

11.2.3 希尔排序 304

11.3 交换排序 306

11.3.1 起泡排序  306

11.3.2 快速排序 307

11.4 选择排序 309

11.4.1 简单选择排序 309

11.4.2 堆排序 310

11.5 归并排序 313

11.6 各种内部排序方法的比较讨论 315

11.7 外部排序 316

11.8 本章小结 317

习题11 318

第12章 查找/检索 320

12.1 基本概念 320

12.2 静态查找表 322

12.2.1 顺序查找 323

12.2.2 折半查找 324

12.2.3 分块查找 328

12.3 二叉查找树 329

12.3.1 二叉查找树的查找 329

12.3.2 二叉查找树的插入 331

12.3.3 二叉查找树的删除 333

12.3.4 平衡二叉树 336

12.4 B-树 342

12.4.1 B-树的定义与示例 342

12.4.2 B-树查找 343

12.4.3 B-树的插入 344

12.4.4 B-树中的删除 346

12.4.5 B+树 348

12.5 散列表查找 349

12.5.1 基本概念 349

12.5.2 散列函数 350

12.5.3 冲突的处理 352

12.5.4 散列表查找及性能分析 354

12.6 本章小结 355

习题12 357

第13章 文件组织 359

13.1 文件概述 359

13.1.1 文件的概念 359

13.1.2 文件的逻辑结构 360

13.1.3 文件的物理结构 361

13.1.4 文件的操作 362

13.2 顺序文件 363

13.2.1 顺序文件概述 363

13.2.2 顺序文件的操作 363

13.3 直接文件(散列文件) 364

13.3.1 桶散列 365

13.3.2 可扩展散列 366

13.4 索引文件 368

13.5 索引顺序文件 369

13.5.1 ISAM 369

13.5.2 VSAM文件 371

13.6 倒排文件 373

13.7 本章小结 374

习题13 374

附录A Turbo C 3.0集成开发环境的使用 376

A.1 Turbo C 3.0简介和启动 376

A.2 Turbo C 3.0集成开发环境 376

A.3 C程序上机执行过程 382

A.4 C程序的调试 383

A.4.1 编译、连接时常见错误 383

A.4.2 程序的动态调试 384

附录B 参考术语表 385

参考文献 392