第一图书网

数据结构

王晓东 科学出版社
出版时间:

2008-12  

出版社:

科学出版社  

作者:

王晓东  

页数:

278  

字数:

403000  

前言

  随着世界经济的多元化发展,以计算机为基础的信息技术迅速扩展到各个领域,社会和人类对信息的依赖迅速增长,计算机技术和基于计算机的应用技术已经成为信息社会的重要基础设施。人们已明显意识到计算(computing)所覆盖的领域在不断迅速扩展。高等教育中计算机学科的培养目标、教学计划和课程设置也随着领域的变化在不断地调整、巩固和完善。  计算机科学是一种创造性思维活动,其教育必须面向设计。“数据结构”正是一门面向设计,且处于计算机学科核心地位的技术基础和主干必修课,是计算学科的9个主科目之一。它不仅是计算机科学教育后续课程的理论基础,而且还广泛地用于新兴的技术和研究领域。软件工程专业的学生更要注重抽象,以及抽象描述下的构造思想和方法。现代计算技术的迅速更新与不断深入要求计算机科学与技术专业人才应该具有4种基本专业能力,即计算思维能力、数据结构与算法设计能力、程序设计和实现能力,以及计算机软硬件系统的认知、分析、设计与应用能力。“数据结构”作为整个计算学科本科教育的核心课程,着重于培养学生的数据结构与算法设计能力、程序设计和实现能力。通过对数据结构设计方法的系统学习与研究,理解和掌握设计和应用数据结构的主要方法,培养对算法的计算复杂性进行正确分析的能力,为独立地设计算法和对给定算法进行复杂性分析奠定坚实的理论基础。这些能力对从事计算机系统结构、系统软件和应用软件研究与开发的科学工作者是非常重要和必不可少的。

内容概要

王晓东编著的《数据结构(C++语言版)》以ACM和IEEE/CS
Computing Curricula
2005课程体系,以及教育部计算机科学与技术教学指导委员会发布的“高等学校计算机科学与技术本科专业规范”中制定的关于数据结构和算法设计与分析的知识结构和体系为依据,以基本数据结构和抽象数据类型为知识单元编写而成。全书共分12章,涵盖cc2005课程体系中有关算法与数据结构的知识结构和体系的重要内容,包括数据结构与算法概论,线性表,栈,队列,集合,排序与选择,树,二叉搜索树,堆与优先队列,散列,并查集,图与相关算法。
全书采用面向对象的C++语言作为描述语言,内容丰富,叙述简明,理论与实践并重,每章设计有应用举例和数据结构与算法实验题,并为任课教师免费提供电子课件和课程实验用数据。
《数据结构(C++语言版)》可作为高等学校计算机、电子信息、信息与计算科学、信息管理与信息系统等专业数据结构课程教材,也适合工程技术人员和自学者学习参考。

书籍目录

前言
第1章 数据结构与算法概论
1.1 算法及其复杂性的概念
1.1.1 算法与程序
1.1.2 算法复杂性的概念
1.1.3 算法复杂性的渐近性态
1.2 数据结构与抽象数据类型
1.3 用C++描述数据结构与算法
1.3.1 指针和引用
1.3.2 函数与参数传递
1.3.3 C++的类
1.3.4 类的对象
1.3.5 模板
1.3.6 动态存储分配
1.4 递归
1.5 应用举例
习题1
实验1
实验题1.1 实系数复变多项式问题
实验题1.2 平面几何问题
实验题1.3 m进制数问题
第2章 线性表
2.1 表的基本概念
2.2 用数组实现表
2.3 用指针实现表
2.4 用间接寻址方法实现表
2.5 用游标实现表
2.6 循环链表
2.7 双链表
2.8 表的搜索游标
2.9 应用举例
习题2
实验2
实验题2.1 实系数一元多项式问题
实验题2.2 Josephus排列问题1
实验题2.3 向量分类问题
实验题2.4 条形图轮廓问题
实验题2.5 Josephus排列问题2
第3章 栈
3.1 栈的基本概念
3.2 用数组实现栈
3.3 用指针实现栈
3.4 应用举例
习题3
实验3
实验题3.1 车皮编序问题
实验题3.2 单柱Hanoi塔问题
实验题3.3 多栈模拟问题
实验题3.4 亲兄弟问题
第4章 队列
4.1 队列的基本概念
4.2 用指针实现队列
4.3 用循环数组实现队列
4.4 应用举例
习题4
实验4
实验题4.1 组队列问题
实验题4.2 双栈队列问题
实验题4.3 猴子分桃问题
实验题4.4 逆序表问题
第5章 集合
5.1 集合的基本概念
5.2 抽象数据类型集合
5.3 用位向量实现集合
5.4 用链表实现集合
5.5 应用举例
习题5
实验5
实验题5.1 半数集问题
第6章 排序与选择
6.1 简单排序算法
6.1.1 冒泡排序算法
6.1.2 插入排序算法
6.1.3 选择排序算法
6.1.4 简单排序算法的计算复杂性
6.2 快速排序算法
6.2.1 算法基本思想及实现
6.2.2 算法性能分析
6.2.3 随机快速排序算法
6.3 合并排序算法
6.3.1 算法基本思想及实现
6.3.2 消除递归
6.3.3 自然合并排序算法
6.4 线性时间排序算法
6.4.1 计数排序算法
6.4.2 桶排序算法
6.5 中位数与第k小元素
6.5.1 平均情况下的线性时间选择算法
6.5.2 最坏情况下的线性时间选择算法
6.6 应用举例
习题6
实验6
实验题6.1 交换排序问题
实验题6.2 DNA排序问题
实验题6.3 输油管道问题
实验题6.4 最优服务次序问题
第7章 树
7.1 树的定义
7.2 树的遍历
7.3 树的表示法
7.3.1 父结点数组表示法
7.3.2 儿子链表表示法
7.3.3 左儿子右兄弟表示法
7.4 二叉树的基本概念
7.5 二叉树的运算
7.6 二叉树的实现
7.6.1 二叉树的顺序存储结构
7.6.2 二叉树的结点度表示法
7.6.3 用指针实现二叉树
7.7 线索二叉树
7.8 应用举例
习题7
实验7
实验题7.1 层序列表问题
实验题7.2 最近公共祖先问题
实验题7.3 子树问题-
实验题7.4 同构二叉树问题
实验题7.5 后序中序遍历问题
第8章 二叉搜索树
8.1 有序集与二叉搜索树
8.1.1 抽象数据类型字典
8.1.2 用数组实现字典
8.1.3 二叉搜索树的基本概念
8.2 实现二叉搜索树
8.3 平衡的二叉搜索树AVL树
8.3.1 AVL树的定义和性质
8.3.2 旋转变换
8.3.3 AVL树的插入与重平衡运算
8.3.4 AVL树的删除与重平衡运算
8.4 应用举例
习题8
实验8
实验题8.1 装箱问题
实验题8.2 电路板连线问题
实验题8.3 辞典问题
第9章 堆与优先队列
9.1 优先队列的基本概念
9.2 用字典实现优先队列
9.3 优先级树和堆
9.4 用数组实现堆
9.5 可并优先队列
9.5.1 左偏树的定义
9.5.2 用左偏树实现可并优先队列
9.6 应用举例
习题9
实验9
实验题9.1 区间相交问题
实验题9.2 整数字典问题
实验题9.3 最小权语言问题
实验题9.4 二叉搜索堆问题
实验题9.5 区间覆盖问题
第10章 散列
10.1 抽象数据类型符号表
10.2 开散列
10.3 闭散列
10.4 散列函数的效率
10.5 重新散列
10.6 应用举例
习题10
实验10
实验题10.1 伪随机排列问题
实验题10.2 字符串散列问题
实验题10.3 英文文本分析问题
实验题10.4 最长模式串问题
第11章 并查集
11.1 并查集的基本概念
11.2 用父结点数组实现并查集
11.3 应用举例
习题11
实验11
实验题11.1 二进制方程问题
实验题11.2 网络连通问题
实验题11.3 朋友问题
实验题11.4 等价类划分问题
第12章 图
12.1 图的基本概念
12.2 抽象数据类型图
12.3 图的表示法
12.3.1 邻接矩阵表示法
12.3.2 邻接表表示法
12.3.3 紧缩邻接表
12.4 用邻接矩阵实现图
12.4.1 用邻接矩阵实现赋权有向图
12.4.2 用邻接矩阵实现赋权无向图
12.4.3 用邻接矩阵实现有向图
12.4.4 用邻接矩阵实现无向图
12.5 用邻接表实现图
12.5.1 邻接表基类
12.5.2 用邻接表实现有向图
12.5.3 用邻接表实现无向图
12.5.4 用邻接表实现赋权有向图
12.5.5 用邻接表实现赋权无向图
12.6 图的遍历
12.6.1 图的搜索游标
12.6.2 广度优先搜索
12.6.3 深度优先搜索
12.7 最短路径算法
12.7.1 单源最短路径算法
12.7.2 Bellman-Ford最短路径算法
12.7.3 所有顶点对之间的最短路径算法
12.8 最小支撑树
12.8.1 最小支撑树性质
12.8.2 最小支撑树的Prim算法
12.8.3 最小支撑树的Kruskal算法
12.9 图匹配算法
12.10 应用举例
习题12
实验12
实验题12.1 图的二着色问题
实验题12.2 赋权有向图中心问题
实验题12.3 最长简单路径问题
实验题12.4 计算机网络问题
实验题12.5 差分约束问题
实验题12.6 有截止时间的工作排序问题
实验题12.7 无向图的连通分支问题
参考文献

章节摘录

  第1章 数据结梅与算法概论  1.1 算法及其复杂性的概念  1.1.1 算法与程序  对于计算机科学来说,算法(algorithm)的概念至关重要。例如,在大型软件系统的开发中,设计出有效的算法将起决定性的作用。  算法是由若干条指令组成的有穷序列,且满足下述几条性质:  (1)输入:有若干个由外部提供的量作为算法的输入。  (2)输出:算法产生至少一个量作为输出。  (3)确定性:组成算法的每条指令是清晰、无歧义的。  (4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也是有限的。  程序(program)是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)。例如,操作系统,它是一个在无限循环中执行的程序,因而不是一个算法。然而可把操作系统的各种任务看成是一些单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。  1.1.2 算法复杂性的概念  一个算法复杂性的高低体现在运行该算法需要多少计算机资源。所需要的资源越多,算法的复杂性越高。所需要的资源越少,算法的复杂性就越低。最重要的计算机的资源是时间资源和空间资源。因此,算法的复杂性有时间复杂性和空间复杂性之分。对于任意给定的问题,设计出复杂性尽可能低的算法是算法设计追求的重要目标。


编辑推荐

  《国家级精品课程主干教材:数据结构(C++语言版)》是在国家精品课程“算法与数据结构”的建设过程中,以ACM和IEEE/CS Computing Curricula 2005课程体系及教育部计算机科学与技术教学指导委员会发布的“高等学校计算机科学与技术本科专业规范”中关于算法与数据结构的知识结构和体系为依据编写而成。全书共分12章,具体内容包括数据结构与算法概论、线性表、排序与选择、二叉搜索树、并查集等。该书可供各大专院校作为教材使用,也可供从事相关工作的人员作为参考用书使用。

图书封面

广告

下载页面


数据结构 PDF格式下载



相关图书