出版时间:2011-3 出版社:清华大学出版社 作者:秦锋 编 页数:306
内容概要
本书全面系统地介绍了线性表、队列、堆栈、树、图等基本数据结构,以及这些数据结构在计算机中的存储及算法实现,系统地介绍了各种查找及排序算法的实现和效率分析,最后一章给出了数据结构综合应用实例。书中各种算法采用C语言描述,注重程序设计风格。
本书有配套教材《数据结构(C语言版)例题详解与课程设计指导》(ISBN:9787302246282),书中包含各知识点的归纳与总结,也包含例题详解、习题解答以及课程设计指导。
有关教学参考资料的电子文档可通过下载。
本书语言流畅,内容通俗易懂,算法描述力求简练、易读。可作为计算机类及信息类专业教材,也可供广大计算机爱好者及软件开发人员自学提高时使用。
书籍目录
第1章 绪论
1.1 什么是数据结构
1.1.1 数据结构的定义
1.2 基本概念和术语
1.2.1 数据与数据元素
1.2.2 数据的逻辑结构与存储结构
1.2.3 数据运算
1.2.4 数据类型与抽象数据类型
1.3 算法和算法描述语言
1.4 算法分析
1.4.1 算法评价
1.4.2 算法性能分析与度量
本章小结
习题
第2章 线性表
2.1 线性表的逻辑结构
2.1.1 线性表的定义
2.1.2 线性表的基本操作
2.2 线性表的顺序存储及运算实现
2.2.1 顺序表
2.2.2 顺序表上基本运算的实现
2.3 顺序表应用举例
2.4 线性表的链式存储和运算实现
2.4.1 单链表
2.4.2 单链表基本运算的实现
2.4.3 循环链表
2.4.4 双向链表
2.4.5 静态链表
2.4.6 单链表应用举例
2.5 顺序表和链表的比较
本章小结
习题
第3章 栈和队列
3.1 栈
3.1.1 栈的定义及基本操作
3.1.2 栈的顺序存储及操作实现
3.1.3 栈的链式存储及操作实现
3.2 栈的应用举例
3.3 递归
3.3.1 递归定义
3.3.2 递归和栈的关系
3.3.3 递归算法实例
3.4 队列
3.4.1 队列的定义及基本操作
3.4.2 队列的顺序存储实现及操作实现
3.4.3 队列的链式存储实现及操作实现
3.5 队列应用举例
本章小结
习题
第4章 串
4.1 串及其基本运算
4.1.1 串的基本概念
4.1.2 串的基本运算
4.2 串的顺序存储及基本运算
4.2.1 串的定长顺序存储
4.2.2 定长顺序串的基本运算
4.3 模式匹配
4.3.1 简单的模式匹配算法
4.3.2 KMP算法
4.4 串的堆存储结构
4.4.1 动态堆存储
4.4.2 静态堆存储
4.5 串的链式存储结构
4.6 文本编辑——串操作应用
本章小结
习题
第5章 数组和广义表
5.1 数组
5.1.1 数组的定义
5.1.2 数组的内存映像
5.2 特殊矩阵的压缩存储
5.2.1 对称矩阵
5.2.2 三角矩阵
5.2.3 稀疏矩阵
5.3 广义表
5.3.1 广义表的定义
5.3.2 广义表的存储
5.3.3 广义表基本操作的实现
本章小结
习题
第6章 树和二叉树
6.1 树的基本概念
6.1.1 树的定义及其表示
6.1.2 基本术语
6.2 二叉树
6.2.1 二叉树的定义
6.2.2 二叉树的性质
6.2.3 二叉树的存储结构
6.3 遍历二叉树
6.3.1 先序遍历
6.3.2 中序遍历
6.3.3 后序遍历
6.3.4 按层次遍历二叉树
6.3.5 遍历算法的应用举例
6.4 线索二叉树
6.4.1 线索的概念
6.4.2 线索的算法实现
6.4.3 线索二叉树上的运算
6.5 树与森林
6.5.1 树的存储结构
6.5.2 树、森林和二叉树的转换
6.5.3 树和森林的遍历
6.6 哈夫曼树
6.6.1 基本术语
6.6.2 哈夫曼树的建立
本章小结
习题
第7章 图
7.1 图的基本概念
7.1.1 图的定义和术语
7.1.2 图的基本操作
7.2 图的存储结构
7.2.1 邻接矩阵
7.2.2 邻接表
7.2.3 十字链表
7.2.4 邻接多重表
7.3 图的遍历
7.3.1 深度优先搜索
7.3.2 广度优先搜索
7.3.3 应用图的遍历判定图的连通性
7.3.4 图的遍历的其他应用
7.4 最小生成树
7.4.1 生成树及生成森林
7.4.2 最小生成树的概念
7.4.3 构造最小生成树的Prim算法
7.4.4 构造最小生成树的Kruskal算法
7.5 最短路径
7.5.1 从一个源点到其他各点的最短路径
7.5.2 每一对顶点之间的最短路径
7.6 有向无环图及其应用
7.6.1 有向无环图的概念
7.6.2 AOV网与拓扑排序
7.6.3 AOE图与关键路径
本章小结
习题
第8章 查找
8.1 基本概念
8.2 线性表的查找
8.2.1 顺序查找
8.2.2 有序表的查找
8.2.3 分块查找
8.3 树表查找
8.3.1 二叉排序树
8.3.2 平衡二叉树(AVL树)
8.3.3 B-树和B?+树
8.4 哈希表查找(杂凑法)
8.4.1 哈希表与哈希方法
8.4.2 常用的哈希方法
8.4.3 处理冲突的方法
8.4.4 哈希表的操作
8.4.5 哈希表查找及其分析
本章小结
习题
第9章 排序
9.1 基本概念
9.2 插入排序
9.2.1 直接插入排序
9.2.2 折半插入排序
9.2.3 希尔排序
9.3 交换排序
9.3.1 冒泡排序
9.3.2 快速排序
9.4 选择排序
9.4.1 简单选择排序
9.4.2 堆排序
9.5 归并排序
9.6 基数排序
9.6.1 多关键码排序
9.6.2 链式基数排序
本章小结
习题
第10章 数据结构综合应用
10.1 各种结构类型之间的关系概述
10.2 二叉树与分治策略
10.3 图的遍历及其应用
本章小结
习题
参考文献
章节摘录
版权页:插图:4.时空效率时空效率(efficiency)要求算法的执行时间尽可能地短,占用的存储空间尽可能地少。但时空要求往往是相互矛盾的,节省了时间可能牺牲空间,反之亦然。设计者应在时间与空间两方面有所平衡。上述4个目标,除“正确性”要求达到第三层次以上,其他目标很难有具体要求,有时目标之间还会互相抵触,因此我们只能根据具体情况有所侧重。例如,若算法需重复多次使用,则力求节省时间;若问题的数据量很大,计算机的存储量又较小,则力求节省空间。本节的算法分析主要讨论算法的时间性能以及空间性能。1.4.2算法性能分析与度量可以用一个算法的时间复杂度与空间复杂度来评价算法的优劣。当将一个算法转换成程序并在计算机上执行时,其运行所需要的时间取决于下列因素。(1)硬件的速度。例如使用微机还是使用服务器。(2)书写程序的语言。实现语言的级别越高,其执行效率就越低。(3)编译程序所生成目标代码的质量。对于代码优化较好的编译程序其所生成的程序质量较高。(4)问题的规模。例如,求100以内的素数与求1000以内的素数的执行时间肯定是不同的。显然,在各种因素都不能确定的情况下,很难比较出算法的执行时间。也就是说,使用执行算法的绝对时间来衡量算法的效率是不合适的。为此,我们时间复杂度的定义如下所示。一个算法的时间复杂度(time complexity)是指,算法运行从开始到结束所需要的时间。这个时间就是该算法中每条语句的执行时间之和,而每条语句的执行时间是该语句执行次数(也称为频度)与执行该语句所需时间的乘积。但是,当算法转换为程序之后,一条语句执行一次所需的时间与计算机的性能及编译程序生成目标代码的质量有关,是很难确定的。为此,我们假设执行每条语句所需的时间均为单位时间,在这一假设下,一个算法所花费的时间就等于算法中所有语句的频度之和。这样,我们就可以脱离计算机的硬件、软件环境而独立地分析算法所消耗的时间。
编辑推荐
《数据结构(C语言版)》在省级精品课程建设的基础上编写的,为高质量教学提供配套资源。定位鲜明。本教材立足一般本科院校,难度适中,包括对基本算法的引申和拓展,兼顾对基本算法清晰细致的分析和对复杂问题的适当引导,在厚基础和注重能力上实现最佳平衡。内容全面,算法设计简明,叙述精练。系统地介绍线性表、队列、堆栈、树、图等基本数据结构,这些数据结构在计算机中的存储及算法实现,以及各种查找及排序算法的实现和效率分析,最后给出了一个数据结构的综合应用实例,运用数据结构三大逻辑结构解决实际问题。书中各个算法描述思路清晰,编程风格统一,书中代码都调试通过,保证算法的正确性。配套齐全。包括《数据结构(C语言版)例题详解与课程设计指导》、教学课件(PPT)、按章节和学时备课教案(Word)、配套源代码、课程设计案例指导书、省级精品课程教学网站等。
图书封面
评论、评分、阅读与下载