第一图书网

数据结构

熊岳山 清华大学出版社
出版时间:

2012-1  

出版社:

清华大学出版社  

作者:

熊岳山  

内容概要

  数据结构是计算机科学与技术、网络工程、软件工程、信息安全等专业的重要基础课,是这些专业的核心课程之一,是一门集技术性、理论性和实践性于一体的课程。本书重点介绍抽象数据类型、基本数据结构、算法性能评价、c++语言描述数据结构、数据结构的应用等内容,进一步使读者理解数据抽象与面向对象编程实现的关系,提高使用计算机解决实际问题的能力。
  本书内容包括基本数据类型、抽象数据类型、算法效率分析、顺序表、链表、树和二叉树、图、多维数组等内容。本书结构合理,内容丰富,算法理论分析详细,数据结构的算法描述丰富,用c++语言编写的算法代码都已调试通过,便于自学。可作为高等院校计算机科学与技术、网络工程、软件工程、信息安全等专业、军事院校的基础合训专业和其他相关专业的教材和参考书,也可供从事计算机软件开发的科技工作者参考。

书籍目录

《数据结构(c++描述)》
第1章 数据结构概述
1.1 基本概念
1.1.1 数据、数据元素和数据对象
1.1.2 数据结构
1.2 数据结构的分类
1.3 抽象数据类型
1.3.1 两种软件设计方法
1.3.2 数据类型
1.3.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.2.3 数组的应用
2.3 栈
2.3.1 栈的抽象数据类型及其实现
2.3.2 栈的应用
2.4 队列
2.4.1 队列的抽象数据类型及其实现
2.4.2 优先级队列
2.4.3 队列的应用——离散事件驱动模拟
习题
第3章 链表
3.1 动态数据结构
3.2 单链表
3.2.1 基本概念
3.2.2 单链表结点类
3.2.3 单链表类
3.2.4 栈的单链表实现
3.2.5 链式队列
3.2.6 链表的应用举例
3.3 循环链表
3.4 双链表
习题
第4章 排序
4.1 基本概念
4.2 插入排序
4.2.1 直接插入排序
4.2.2 折半插入排序
4.2.3 shell排序
4.3 选择排序
4.3.1 直接选择排序
4.3.2 树形选择排序
4.4 交换排序
4.4.1 冒泡排序
4.4.2 快速排序
4.5 分配排序
4.5.1 基本思想
4.5.2 基数排序
4.6 归并排序
4.7 外部排序
4.7.1 二路合并排序
4.7.2 多路替代选择合并排序
4.7.3 最佳合并排序
4.8 排序算法的时间下界
习题
第5章 查找
5.1 基本概念
5.2 顺序查找
5.3 折半查找
5.4 分块查找
5.5 字符串的模式匹配
5.5.1 朴素的模式匹配算法
5.5.2 kmp匹配算法
5.5.3 算法效率分析
5.6 散列查找
5.6.1 概述
5.6.2 散列函数
5.6.3 冲突的处理
5.6.4 散列查找的效率
习题
第6章 树和二叉树
6.1 树的概念
6.2 二叉树
6.2.1 二叉树的概念
6.2.2 二叉树的性质
6.2.3 二叉树的存储方式
6.2.4 树(树林)与二叉树的相互转换
6.3 树(树林)、二叉树的遍历
6.3.1 树(树林)的遍历
6.3.2 二叉树的遍历
6.4 抽象数据类型binarytree以及类binarytree
6.4.1 抽象数据类型binarytree
6.4.2 一个完整包含类binarytreenode和类binarytree实现的例子
6.5 二叉树的遍历算法
6.5.1 非递归(使用栈)的遍历算法
6.5.2 线索化二叉树的遍历,
习题
第7章 树形结构的应用
7.1 二叉排序稠
7.1.1 二叉排序树与类binarystree
7.1.2 二叉排序树的检索、插入和删除运算
7.1.3 等概率查找对应的最佳二叉排序树
7.2.平衡的二叉排序树
7.2.1 平衡的二叉排序树与类avltree
7.2.2 平衡二叉排序树的插入和删除
7.2.3 类avltree与avl树高度
7.3 b—树、b+—树
7.4 2—3树
7.5 红黑树
7.6 huffman最优二叉树
7.6.1 huffman最优二叉树概述
7.6.2 树编码
7.7 堆排序
7.8 判定树
7.9 等价类和并查集
7.9.1 等价类
7.9.2 并查集
7.10 键树
习题
第8章 图
8.1 基本概念
8.2 图的存储表示
8.2.1 相邻矩阵表示图
8.2.2 图的邻接表表示
8.2.3 邻接多重表
8.3 构造graph类
8.3.1 基于邻接表表示的graph类
8.3.2 graph类的实现
8.4 图的遍历
8.4.1 深度优先遍历
8.4.2 广度优先遍历
8.5 最小代价生成树
8.6 单源最短路径问题——dijkstra算法
8.7 每一对顶点间的最短路径问题
8.8 有向无回路图
8.8.1 dag图和aov、aoe网
8.8.2 aov网的拓扑排序
8.8.3 aoe网的关键路径
习题
第9章 多维数组
9.1 多维数组的顺序存储
9.2 特殊矩阵的顺序存储
9.3 稀疏矩阵的存储
9.4 抽象数据类型稀疏矩阵与class sparsematrix
习题
附录 nodelib.h
参考文献

章节摘录

版权页:插图:4.5 分配排序4.5.1 基本思想为了帮助理解分配排序的基本思想,先看一个具体问题。有一堆卡片,记载了从1981年1月1日至2000年12月30日之间每天的工作摘要;每张卡片上标明了日期(年、月、日),并记载了当日的工作内容摘要。现在的问题是,为了查找卡片方便,需要对这一堆卡片进行排序,按年月日的先后顺序将这些卡片有序地存放起来,这样,当需要了解某一天的工作概况时,可以非常方便地查找到所需要的卡片。解决这个问题有两种具体方法。(1)先将所有卡片按年份分成大组,第一大组中是1981年的卡片,第二大组中是1982年的卡片,最后一个大组中是2000年的卡片;然后对分在同一大组中的所有卡片按月份分成小组,每一大组中的第一小组是1月份的卡片,第二小组是2月份的卡片,第十二小组是12月份的卡片;再对每一小组中的卡片按日期由小到大的顺序进行排序;最后,将所有排序后的各组卡片依次收集起来,最上面的是第一大组中第一小组的卡片,紧接着是第一大组中第二小组的卡片,以此类推,最下面的卡片是最后一个大组中的第十二组卡片。(2)先将所有卡片按日期分成31个组,第一组中是日期为1号的卡片,第二组中是日期为2号的卡片.第三十一组是日期为31号的卡片,然后将所有卡片依次收集起来,第一组在最上面,第三十一组在最下面;对收集起来的全部卡片,再按月份依次分到12个组内,每组内的卡片保持在本次收集起来后未分组前的相对先后关系,第一组是1月份的卡片,第二组是2月份的卡片,最后一组是12月份的卡片,然后又将所有卡片依次收集起来,第一组在最上面,第十二组在最下面;最后,将所有卡片按年份分到20个组,同样地,每组内的卡片保持在本次收集起来后未分组前的相对先后关系,第一组是1981年的卡片,第二组是1982年的卡片,第二十组是2000年的卡片,然后将所有卡片收集起来,第一组在最上面,紧接着是第二小组的卡片,最下面是第二十组卡片。显然,这两种方法都涉及一个先分配后收集的过程。


编辑推荐

《数据结构(C++描述)》是重点大学计算机专业系列教材之一。

图书封面

广告

下载页面


数据结构 PDF格式下载



虽然书很薄,但内容很丰富,值得一看。


质量还不错~~~


书是正品 不错· 简单 浅显~ 比较好理解


相关图书