-
内容大纲
本书以数据结构基础和算法设计方法为知识单元,系统地介绍了数据结构与算法的基础知识及应用,简明扼要地阐释了计算机算法的设计与分析方法。本书的主要内容包括线性表、树、图等基础数据结构,同时也包括一些实用性较强的算法及高级数据结构,如并查集、伸展树等。以经典问题算法为例,书中分类介绍了算法设计方法以及查找与排序算法等。作者结合ACM国际大学生程序设计竞赛的需求,对各章节知识的灵活应用进行了详细的分析,用丰富的实例帮助读者由浅入深、快速地掌握算法设计的技巧,提升算法设计能力。本书的算法全部采用C语言描述,且在Dev-C++中测试通过,习题安排上注重能力培养和实战训练的需求。
本书注重理论与实践相结合,内容深入浅出,可以作为高等学校计算机相关专业的教材或参考书,也可供ACM竞赛的兴趣爱好者和有关工程技术人员参考。 -
作者介绍
-
目录
第1章 绪论
1.1 数据结构简介
1.1.1 “数据结构”课程的内容
1.1.2 数据结构的基本概念和术语
1.2 抽象数据类型
1.3 算法的执行效率及其度量
1.3.1 算法的特性
1.3.2 算法设计的要求
1.3.3 算法效率的度量
1.3.4 算法的存储空间需求
1.4 算法分析
1.4.1 算法设计与分析的重要性
1.4.2 一个简单的算法分析设计实例
习题
ACM/ICPC实战练习
第2章 线性结构
2.1 线性表
2.1.1 线性表的定义
2.1.2 线性表的抽象数据类型
2.1.3 线性表的存储结构
2.2 线性表的顺序存储及运算实现
2.2.1 顺序表
2.2.2 顺序表上基本运算的实现
2.2.3 顺序表应用举例
2.3 线性表的链式存储和运算实现
2.3.1 单链表
2.3.2 单链表上基本运算的实现
2.3.3 循环链表
2.3.4 双向链表
2.3.5 静态链表
2.3.6 单链表应用举例
2.3.7 线性表实现方法比较
2.4 栈
2.4.1 顺序栈
2.4.2 链式栈
2.4.3 栈的应用举例
2.4.4 栈与递归
2.5 队列
2.5.1 顺序队列
2.5.2 链式队列
2.5.3 基于队列的算法设计实例
2.6 数组
2.6.1 数组的定义
2.6.2 数组的顺序表示和实现
2.6.3 特殊矩阵的压缩存储
习题
ACM/ICPC实战练习
第3章 字符串
3.1 串类型定义
3.2 串的表示和实现
3.2.1 串的定长顺序存储结构及其基本运算实现
3.2.2 串的堆存储结构及其基本运算实现
3.2.3 串的链式存储结构及其基本运算实现
3.3 串的模式匹配算法
3.3.1 朴素匹配算法
3.3.2 KMP算法
3.3.3 基于KMP算法的应用举例
习题
ACM/ICPC实战练习
第4章 树和二叉树
4.1 树
4.1.1 树的定义和基本术语
4.1.2 树的抽象数据类型
4.1.3 树的存储结构
4.1.4 树的遍历
4.1.5 树的应用
4.2 二叉树
4.2.1 二叉树的定义
4.2.2 二叉树的性质
4.2.3 二叉树的存储结构
4.2.4 表达式树
4.2.5 二叉树的基本操作及实现
4.3 遍历二叉树和线索二叉树
4.3.1 遍历二叉树
4.3.2 二叉树遍历的非递归实现
4.3.3 线索二叉树
4.4 树、森林和二叉树的转换
4.4.1 树转换为二叉树
4.4.2 森林转换为二叉树
4.4.3 二叉树转换为树和森林
4.5 哈夫曼编码树
4.5.1 最优二叉树(哈夫曼树)
4.5.2 哈夫曼编码
4.6 二叉搜索树
4.6.1 二叉搜索树的基本操作
4.6.2 平衡二叉树(AVL树)
4.7 伸展树
4.7.1 伸展树的基本操作
4.7.2 伸展树的参考例程
4.8 堆与优先队列
4.8.1 堆的逻辑定义
4.8.2 堆的性质
4.8.3 堆的基本操作
4.8.4 堆的实现例程
4.9 B-树和B+树
4.9.1 B-树及其查找
4.9.2 B-树的插入和删除
4.9.3 B+树
4.10 树结构搜索算法应用案例
4.10.1 基于二叉树遍历的应用
4.10.2 ACM/ICPC竞赛题例分析
习题
ACM/ICPC实战练习
第5章 图论算法
5.1 图
5.1.1 图的定义和术语
5.1.2 图的抽象数据类型
5.1.3 图的存储结构
5.2 图的遍历算法
5.2.1 深度优先搜索
5.2.2 广度优先搜索
5.2.3 深度优先搜索与广度优先搜索的应用
5.3 图的连通性
5.3.1 无向图的连通性
5.3.2 有向图的连通性
5.3.3 生成树和生成森林
5.3.4 关节点和重连通分量
5.3.5 有向图的强连通分量
5.4 有向无环图及其应用
5.4.1 有向无环图的概念
5.4.2 AOV网与拓扑排序
5.4.3 AOE网与关键路径
5.5 最短路径算法
5.5.1 无权最短路径
5.5.2 Dijkstra算法
5.5.3 具有负值边的图
5.5.4 所有点对的最短路径
5.6 最小支撑树
5.6.1 Prim算法
5.6.2 Kruskal算法
5.6.3 最小生成树算法应用
5.7 网络流问题
5.7.1 网络流的最大流问题
5.7.2 网络流应用
习题
ACM/ICPC实战练习
第6章 内部排序
6.1 概述
6.2 基于顺序比较的简单排序算法
6.2.1 插入排序
6.2.2 冒泡排序
6.2.3 直接选择排序
6.2.4 简单排序算法的时间代价对比
6.3 缩小增量排序方法——希尔排序
6.4 基于分治策略的排序
6.4.1 快速排序
6.4.2 归并排序
6.5 树的排序方法
6.5.1 堆排序
6.5.2 树的选择排序
6.6 分配排序和基数排序
6.6.1 桶式排序
6.6.2 基数排序
6.7 内部排序问题讨论与分析
6.7.1 常用排序算法性能简要分析
6.7.2 排序问题的下限
6.8 排序应用举例
习题
ACM/ICPC实战练习
第7章 文件管理和外排序
7.1 外存储器
7.1.1 磁盘
7.1.2 磁盘访问时间估算
7.2 外存文件的组织
7.2.1 文件组织
7.2.2 文件上的操作
7.2.3 C语言中的文件流操作
7.3 缓冲区和缓冲池
7.4 外排序
7.4.1 二路外排序
7.4.2 多路平衡归并的实现
7.5 置换-选择排序
7.6 最佳归并树
习题
第8章 检索与散列表
8.1 检索的基本概念
8.2 基于线性表的检索
8.2.1 顺序检索
8.2.2 有序表的二分检索
8.2.3 有序表的插值查找和斐波那契查找
8.2.4 分块检索
8.3 集合的检索
8.3.1 集合的数学特性
8.3.2 计算机中的集合
8.4 键树
8.4.1 基本概念
8.4.2 键树的存储表示
8.4.3 键树相关算法实现
8.5 散列方法及其检索
8.5.1 散列函数
8.5.2 开散列方法(分离链接法)
8.5.3 开放定址法
8.5.4 散列方法的效率分析
8.6 散列表及检索的应用
习题
ACM/ICPC实战练习
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
