数据结构与算法(第2版)
分類: 图书,计算机/网络,数据库,数据库理论,
作者: 张晓莉,王苗,罗文劼编著
出 版 社: 机械工业出版社
出版时间: 2008-7-1字数:版次: 2页数: 259印刷时间:开本: 16开印次:纸张:I S B N : 9787111233572包装: 平装编辑推荐
本书第1版很受广大读者欢迎,作者受了很大的鼓舞,结合近些年新的教学经验,改版中在第1版基础上强调侧重实用、保证适当深度,同时配套了习题解答与实验指导(数据结构与算法习题解答与实验指导,书号978-7-111-23356-5)。为方便教学,本书配套了电子课件,可从www.cmpedu.com上下载
内容简介
本书详纽讲述了线性结构、树结构和图结构中的数据表示及数据处理的方法,对查找和排序两种重要的数据处理进行了详细的探讨。书中对各类数据结构的分析按照“逻辑结构-存储结构-基本运算的实现-时空性分析-实例”的顺序进行讲述,算法全部采用C语言描述,很容易转换成程序。在每章的后面都配有不同类型的习题:有加强概念理解的选择题、判断题,有帮助理解算法思想的简答题,也有培养算法设计能力的算法设计题。本书语言叙述通俗易懂,由浅入深,算法可读性好,应用性强,书中配有大量算法设计的例子,便于读者理解和掌握数据结构中数据表示和数据处理的方法。
本书可作为计算机和信息类相关专业本(专)科“数据结构”课程的教材或学习参考书,也可供有关工程技术人员参考。
目录
出版说明
前言
第1章 绪论
1.1 引言
1.1.1 为什么要学习数据结构
1.1.2 数据结构课程的内容
1.2 数据结构的概念
1.2.1 基本概念和术语
1.2.2 抽象数据类型
1.3 算法
1.3.1 算法及其特征
1.3.2 算法的描述
1.3.3 算法的性能分析
1.4 小结
习题
第2章 线性表
2.1 线性表的逻辑结构
2.1.1 线性表的定义
2.1.2 线性表的基本运算
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.4 顺序表和链表的比较
2.5 小结
习题
第3章 栈和队列
3.1 栈
3.1.1 栈的定义及基本运算
3.1.2 栈的存储及运算实现
3.2 栈的应用举例
3.3 队列
3.3.1 队列的定义及基本运算
3.3.2 队列的存储及运算实现
3.4 队列的应用举例
3.5 小结
习题
第4章 字符串及线性结构的扩展
4.1 字符串
4.1.1 字符串的基本概念
4.1.2 顺序串
4.1.3 模式匹配
4.2 数组
4.2.1 数组的逻辑结构及内存映象
4.2.2 特殊矩阵
4.2.3 稀疏矩阵
4.3 广义表
4.3.1 广义表的逻辑结构
4.3.2 广义表的存储
4.4 小结
习题
第5章 树结构
5.1 二叉树
5.1.1 二叉树的概念
5.1.2 二叉树的主要性质
5.1.3 二叉树的存储
5.1.4 二叉树基本运算的实现
5.2 二叉树的遍历
5.2.1 以递归方法实现二叉树的3种遍历
5.2.2 以非递归方法实现二叉树的3种遍历
5.2.3 按层次遍历二叉树
5.3 二叉树遍历的应用
5.3.1 构造二叉树的二叉链表存储
5.3.2 由遍历序列恢复二叉树
5.3.3 在二叉树中查找值为x的数据元素
5.3.4 统计给定二叉树中叶子结点的数目
5.3.5 表达式运算
5.4 线索二叉树
5.4.1 线索二叉树的定义及结构
5.4.2 线索二叉树的构建及遍历
5.5 哈夫曼树及哈夫曼编码
5.5.1 问题的引入
5.5.2 哈夫曼树
5.5.3 哈夫曼树的构造
5.5.4 哈夫曼编码
5.6 树
5.6.1 树的概念
5.6.2 树的表示
5.6.3 树的存储
5.7 树和森林与二叉树之间的转换
5.7.1 树转换为二叉树
5.7.2 森林转换为二叉树
5.7.3 二叉树转换为树和森林
5.8 树或森林的遍历
5.8.1 树的遍历
5.8.2 森林的遍历
5.9 树的应用
5.9.1 判定树
5.9.2 集合的表示
5.9.3 等价问题
5.10 小结
习题
第6章 图结构
6.1 图的基本概念
6.1.1 图的定义和术语
6.1.2 图的基本操作
6.2 图的存储方法
6.2.1 邻接矩阵
6.2.2 邻接表
6.2.3 十字链表
6.2.4 邻接多重表
6.3 图的遍历
6.3.1 深度优先搜索
6.3.2 广度优先搜索
6.3.3 应用图的遍历判定图的连通性
6.4 生成树和最小生成树
6.4.1 生成树和生成森林
6.4.2 最小生成树
6.4.3 构造最小生成树的Prim算法
6.4.4 构造最小生成树的Kruskal算法
6.5 有向无环图及其应用
6.5.1 有向无环图的概念
6.5.2 AOV网与拓扑排序
6.5.3 AOE网与关键路径
6.6 最短路径
6.6.1 从一个源点到其他各点的最短路径
6.6.2 每一对顶点之间的最短路径——弗洛伊德算法
6.7 小结
习题
第7章 查找
7.1 基本概念
7.2 线性表查找
7.2.1 顺序查找
7.2.2 在顺序存储的有序表上查找
7.3 树表查找
7.3.1 二叉排序树
7.3.2 平衡二叉树
7.3.3 B树和B+树
7.4 散列表查找
7.4.1 散列表
7.4.2 常用的散列函数
7.4.3 处理冲突的方法及散列表的构造
7.4.4 散列表上的查找
7.4.5 散列表上的删除
7.5 小结
习题
第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.6 基数排序
8.6.1 多关键码排序
8.6.2 链式基数排序
8.7 外部排序
8.7.1 外部排序的方法
8.7.2 多路平衡归并的实现
8.8 小结
习题
参考文献
书摘插图
第1章 绪论
计算机科学是一门研究数据表示和数据处理的科学。数据就是对客观事务采用的计算机能够识别、存储和处理的符号表示。简言之,数据是计算机化的信息,是计算机可以直接处理的最基本和最重要的对象。无论是进行科学计算或数据处理、过程控制,还是对文件的存储和检索等计算机应用,都是对数据进行加工处理的过程。计算机对数据的处理并不是简单地将数据堆积在一起,而是使其具有某种内在的联系。因此,为了更有效地处理数据,设计出好的算法,编写出结构清晰而且效率高的程序,必须研究数据的特性、数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
1.1 引言
数据结构是计算机科学与技术专业的专业基础课,是一门十分重要的核心课程。数据结构的知识为后续专业课程的学习提供必要的知识和技能准备,学好“数据结构”这门课程,对于学习计算机专业的其他课程,如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的,而且所有的计算机系统软件和应用软件都要用到各种类型的数据结构。因此,要想更好地运用计算机来解决实际问题,仅掌握几种计算机程序设计语言是难以应付众多复杂的课题的,要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。
……