图书介绍
数据结构与程序设计 C语言 第2版PDF|Epub|txt|kindle电子书版本网盘下载
- (美)Robert L.Kruse等著;敖富江译 著
- 出版社: 北京:清华大学出版社
- ISBN:7302096430
- 出版时间:2005
- 标注页数:545页
- 文件大小:25MB
- 文件页数:569页
- 主题词:数据结构-教材;C语言-程序设计-教材
PDF下载
下载说明
数据结构与程序设计 C语言 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
目录1
第1章 编程原则1
1.1 引言1
1.2 Life游戏3
1.2.1 Life游戏规则3
1.2.2 示例3
1.2.3 解决方案5
1.2.4 Life游戏主程序5
1.3 编程风格9
1.3.1 命名9
1.3.2 文档及其格式10
1.3.3 程序的细化和模块化11
1.3.4 小节练习13
1.4.1 占位程序15
1.4 编码、测试及进一步细化15
1.4.2 计算相邻元胞的数目16
1.4.3 输入和输出17
1.4.4 驱动程序20
1.4.5 程序的跟踪21
1.4.6 测试程序的原则22
1.4.7 小节练习24
1.4.8 编程项目24
1.5 注意事项25
1.6 复习题26
1.7 参考文献26
1.7.1 C语言26
1.7.2 编程原则27
1.7.3 Life游戏27
2.1.1 Life程序回顾28
第2章 软件工程介绍28
2.1 程序维护28
2.1.2 关于Life程序的新起点和新方法30
2.1.3 小节练习31
2.1.4 编程项目32
2.2 算法研究:Life程序的第二个版本32
2.2.1 列表:数据结构的说明32
2.2.2 主程序35
2.2.3 信息隐藏38
2.2.4 细化:子程序的开发38
2.2.5 算法的验证41
2.2.6 小节练习43
2.3 编码43
2.3.1 列表函数44
2.3.2 错误处理45
2.3.3 演示和测试46
2.3.4 小节练习49
2.3.5 编程项目50
2.4 Life函数的编码50
2.4.1 Vivify函数50
2.4.2 AddNeighbors函数51
2.4.3 混合函数52
2.4.4 初始化52
2.4.5 编程项目53
2.5 程序分析与比较53
2.5.1 语句数53
2.5.2 比较54
2.6 总结和展望55
2.5.5 编程项目55
2.5.4 小节练习55
2.5.3 时间和空间的平衡55
2.6.1 Life游戏56
2.6.2 程序设计57
2.6.3 C语言58
2.6.4 编程项目59
2.7 注意事项60
2.8 复习题61
2.9 参考文献61
2.9.1 软件工程61
2.9.2 算法验证62
2.9.3 问题解决62
第3章 堆栈和递归63
3.1 堆栈63
3.1.1 引言63
3.1.2 第一个示例:线性颠倒64
3.1.3 信息隐藏65
3.1.4 堆栈的说明65
3.1.5 堆栈的实现67
3.1.6 链接堆栈69
3.1.7 小节练习72
3.1.8 编程项目73
3.2 递归74
3.2.1 子程序的堆栈图解74
3.2.2 子程序调用树74
3.2.3 阶乘:一个递归定义76
3.2.4 分而治之:汉诺(HANOI)塔77
3.2.5 小节练习82
3.2.6 编程项目82
3.3.1 解决8 王后难题83
3.3 回溯:推迟工作83
3.3.2 示例:4王后84
3.3.3 回溯85
3.3.4 细化:选择数据结构86
3.3.5 回溯分析88
3.3.6 小节练习89
3.3.7 编程项目90
3.4 递归法则90
3.4.1 设计递归算法90
3.4.2 递归如何工作91
3.4.3 尾部递归94
3.4.4 何时不使用递归96
3.4.5 指南和总结100
3.4.6 小节练习100
3.5 注意事项101
3.6 复习题102
3.7 参考文献103
第4章 队列和链表104
4.1 定义104
4.2 队列的实现107
4.3 C语言中的环形队列110
4.3.1 小节练习112
4.3.2 编程项目113
4.4 队列的应用:模拟114
4.4.1 引言114
4.4.2 机场的模拟114
4.4.3 主程序116
4.4.4 模拟的步骤118
4.4.5 伪随机数121
4.4.6 示例结果123
4.4.7 编程项目125
4.5 指针和链表126
4.5.1 引言和综述126
4.5.2 指针和C语言中的动态内存128
4.5.3 链表基础132
4.5.4 小节练习133
4.6 链接队列134
4.6.1 小节练习136
4.6.2 编程项目137
4.7 应用:多项式算术137
4.7.1 项目的目的137
4.7.2 主程序138
4.7.3 数据结构及其实现142
4.7.4 读取和写出多项式143
4.7.5 多项式加法145
4.7.6 完成项目147
4.7.7 小节练习147
4.7.8 编程项目148
4.8 抽象数据类型及其实现149
4.8.1 引言149
4.8.2 通用定义150
4.8.3 数据说明的细化152
4.8.4 小节练习153
4.9 注意事项153
4.10 复习题154
4.11 参考文献154
第5章通 用列表156
5.1 列表说明156
5.2.1 连续实现158
5.2 列表的实现158
5.2.2 简单的链接实现159
5.2.3 变更:保持当前位置163
5.2.4 双向链表164
5.2.5 实现的比较166
5.2.6 小节练习167
5.2.7 编程项目168
5.3 字符串168
5.4 应用:文本编辑器170
5.4.1 说明171
5.4.2 实现171
5.4.3 编程项目178
5.5 数组中的链表178
5.5.1 方法179
5.5.2 操作:空间管理180
5.5.3 其他操作183
5.5.4 链表的变化184
5.5.5 小节练习184
5.6 排列186
5.6.1 思想187
5.6.2 细化187
5.6.3 通用函数188
5.6.4 数据结构:优化188
5.6.5 最终的程序189
5.6.6 编程项目191
5.7 注意事项191
5.8 复习题192
5.9 参考文献192
6.1.2 分析193
6.1.1 键193
第6章 搜索193
6.1 搜索:介绍及其表示193
6.1.3 外部搜索和内部搜索194
6.1.4 C语言实现194
6.1.5 参数194
6.2 顺序搜索195
6.2.1 算法及函数195
6.2.2 算法分析196
6.2.3 测试197
6.2.4 小节练习199
6.2.5 编程项目200
6.3 寄物处:项目201
6.3.1 介绍和说明201
6.3.2 演示及测试程序203
6.3.3 编程项目205
6.4 二叉搜索206
6.4.1 算法研究207
6.4.2 忽略版本208
6.4.3 识别等式210
6.4.4 小节练习211
6.4.5 编程项目212
6.5 比较树212
6.5.1 分析n=10的情况213
6.5.2 算法推广215
6.5.3 方法的比较218
6.5.4 普遍关系219
6.6.1 优化程序220
6.6 下限220
6.5.6 编程项目220
6.5.5 小节练习220
6.6.2 任意搜索算法221
6.6.3 观察2-树221
6.6.4 搜索下限223
6.6.5 其他的搜索算法223
6.6.6 小节练习224
6.6.7 编程项目224
6.7 渐近线224
6.7.1 介绍224
6.7.2 Big-O表示法225
6.7.3 Big-O表示法的不精确性227
6.7.4 通用函数的排序228
6.8 注意事项229
6.7.6 编程项目229
6.7.5 小节练习229
6.9 复习题230
6.10 参考文献230
第7章 排序232
7.1 介绍和符号232
7.2 插入排序233
7.2.1 顺序列表233
7.2.2 通常的插入排序234
7.2.3 链接版本236
7.2.4 分析237
7.2.5 小节练习238
7.2.6 编程项目239
7.3 选择排序240
7.3.1 算法240
7.3.2 连续实现241
7.3.3 分析242
7.3.4 比较243
7.3.5 小节练习243
7.3.6 编程项目244
7.4 希尔排序244
7.4.1 小节练习246
7.4.2 编程项目246
7.5 下限246
7.5.1 小节练习248
7.5.2 编程项目248
7.6 “分而治之”排序249
7.6.1 主要思想249
7.6.2 示例250
7.6.3 小节练习253
7.7 链表的归并排序254
7.7.1 函数254
7.7.2 合并分析256
7.7.3 小节练习258
7.7.4 编程项目259
7.8 连续列表的快速排序260
7.8.1 主函数260
7.8.2 列表的划分261
7.8.3 快速排序分析263
7.8.4 快速排序的平均情形分析265
7.8.5 与归并排序的比较266
7.8.6 小节练习267
7.9 堆和堆排序269
7.9.1 2-树的列表269
7.8.7 编程项目269
7.9.2 堆排序271
7.9.3 堆排序分析273
7.9.4 优先级队列274
7.9.5 小节练习275
7.9.6 编程项目276
7.10 回顾:方法的比较276
7.10.1 使用的存储空间276
7.10.2 计算机时间276
7.10.3 编程量276
7.10.4 统计分析277
7.10.5 实验测试277
7.10.6 小节练习277
7.12 复习题279
7.11 注意事项279
7.13 参考文献280
第8章 表和信息检索282
8.1 引言:突破lgn障碍282
8.2 矩形数组283
8.2.1 行优先和列优先顺序283
8.2.2 下标矩形数组283
8.2.3 访问表284
8.2.4 小节练习284
8.3 各种形状的表285
8.3.1 三角表285
8.3.2 不规则表286
8.3.3 反向表287
8.3.4 小节练习288
8.4 表:一种新的抽象数据类型289
8.4.1 函数289
8.3.5 编程项目289
8.4.2 抽象数据类型290
8.4.3 实现290
8.4.4 比较291
8.5 应用:基数排序291
8.5.1 思想292
8.5.2 实现292
8.5.3 分析295
8.5.4 小节练习295
8.5.5 编程项目295
8.6 散列296
8.6.1 稀疏表296
8.6.2 选择散列函数297
8.6.3 利用开放寻址的解决方案299
8.6.4 冲突的链式解决方案303
8.6.5 小节练习305
8.6.6 编程项目306
8.7 散列分析307
8.7.1 一个数学娱乐问题的分析307
8.7.2 计数搜索次数307
8.7.3 链式方式的分析308
8.7.4 开放寻址方式的分析308
8.7.5 理论比较309
8.7.6 经验比较310
8.7.7 小节练习311
8.7.8 编程项目312
8.8 总结:方法的比较312
8.9 应用:回顾Life游戏312
8.9.2 数据结构的声明313
8.9.1 算法的选择313
8.9.3 主程序314
8.9.4 函数315
8.9.5 编程项目318
8.10 注意事项319
8.11 复习题319
8.12 参考文献320
第9章 二叉树321
9.1 二叉树的介绍321
9.1.1 定义321
9.1.2 二叉树的遍历323
9.1.3 二叉树的链接实现327
9.1.4 小节练习329
9.2 二叉搜索树331
9.2.1 顺序列表和实现332
9.2.2 树搜索333
9.2.3 二叉搜索树的插入336
9.2.4 树排序338
9.2.5 二叉搜索树的删除339
9.2.6 小节练习342
9.2.7 编程项目343
9.3 构建二叉搜索树346
9.3.1 开始构建347
9.3.2 声明和主函数347
9.3.3 插入节点348
9.3.4 完成任务349
9.3.5 评估350
9.3.6 随机搜索树和优化351
9.3.7 小节练习352
9.4.1 定义353
9.4 高度平衡:AVL树353
9.4.2 节点的插入354
9.4.3 节点的删除361
9.4.4 AVL树的高度363
9.4.5 小节练习364
9.4.6 编程项目365
9.5 分裂树:一个自调整数据结构366
9.5.1 引言366
9.5.2 分裂步骤367
9.5.3 分裂算法369
9.5.4 平摊算法分析:介绍372
9.5.5 分裂的平摊分析375
9.5.6 小节练习379
9.6 注意事项380
9.5.7 编程项目380
9.7 复习题381
9.8 参考文献382
第10章 多路径树384
10.1 果园、树和二叉树384
10.1.1 树的分类384
10.1.2 顺序树386
10.1.3 森林和果园387
10.1.4 形式映射388
10.1.5 旋转389
10.1.6 总结389
10.1.7 小节练习389
10.2 字典搜索树:trie391
10.2.1 trie391
10.2.3 C语言算法392
10.2.2 键的搜索392
10.2.4 trie中的插入393
10.2.5 trie中的删除394
10.2.6 trie的评论395
10.2.7 小节练习395
10.2.8 编程项目395
10.3 外部搜索:B-树396
10.3.1 访问时间396
10.3.2 多路搜索树396
10.3.3 多路平衡树397
10.3.4 B-树的插入397
10.3.5 C语言算法:搜索和插入399
10.3.6 B-树中的删除404
10.3.7 小节练习410
10.3.8 编程项目411
10.4 红黑树412
10.4.1 引言412
10.4.2 定义和分析412
10.4.3 插入414
10.4.4 插入的C语言表示416
10.4.5 小节练习419
10.4.6 编程项目419
10.5 树结构程序:游戏中的预测419
10.5.1 游戏树419
10.5.2 极大极小方法420
10.5.3 算法开发421
10.5.4 细化422
10.5.5 小节练习423
10.6 注意事项424
10.5.6 编程项目424
10.7 复习题425
10.8 参考文献426
第11章 图427
11.1 数学背景427
11.1.1 定义和示例427
11.1.2 无向图428
11.1.3 有向图428
11.2 计算机表示429
11.3 图的遍历432
11.3.1 方法432
11.3.2 深度优先算法433
11.3.3 宽度优先算法434
11.4.1 问题435
11.4 拓扑排序435
11.4.2 深度优先算法436
11.4.3 宽度优先算法437
11.5 寻找最短路径的算法439
11.5.1 问题439
11.5.2 方法440
11.5.3 示例441
11.5.4 实现442
11.6 作为数据结构的图443
11.6.1 小节练习444
11.6.2 编程项目444
11.7 注意事项445
11.8 复习题445
11.9 参考文献445
12.1 问题447
第12章 案例分析:波兰表示法447
12.2 思想449
12.2.1 表达式树449
12.2.2 波兰表示法450
12.2.3 C语言方法451
12.2.4 小节练习451
12.3 波兰表达式的求值452
12.3.1 前缀表达式的求值452
12.3.2 C语言约定453
12.3.3 前缀式求值的C函数453
12.3.4 后缀表达式的求值454
12.3.5 程序的证明:统计堆栈的入口数455
12.3.6 后缀表达式的递归求值458
12.3.7 小节练习460
12.4 从中缀式转换为波兰式461
12.4.1 小节练习466
12.4.2 编程项目466
12.5 交互式表达式求值程序467
12.5.1 总体结构467
12.5.2 数据的表示方法469
12.5.3 初始化和辅助任务471
12.5.4 表达式的转换474
12.5.5 求解表达式的值482
12.5.6 绘制表达式的图形483
12.5.7 小节练习485
12.5.8 编程项目485
12.6 参考文献485
附录A 数学方法487
附录B 递归的消除505
附录C C语言介绍528