数据结构教程(C++版)

分類: 图书,计算机/网络,数据库,数据库理论,
作者: 吉根林,陈波主编
出 版 社: 电子工业出版社
出版时间: 2009-2-1字数:版次: 1页数: 231印刷时间:开本: 16开印次:纸张:I S B N : 9787121080616包装: 平装编辑推荐
本教材在编写过程中集作者多年“数据结构”精品课程的教学经验,体现科学性、先进性和实用性原则,既注重基本原理,又重视算法实现;力求内容丰富,重点突出,条理清晰,由浅入深,语言流畅,具有特色。全书使用C++类定义各种数据结构,利用C++伪代码描述算法;给出许多经典算法和典型题例;每章均附有小结、习题和上机实验题;附录给出了5套课程考试样卷和5道课程设计题,以供教学参考。
本教材共分10章。第1章简要介绍数据结构和算法的基本概念;第2~5章介绍线性结构及其算法,包括线性表、栈、队列、串、数组和特殊矩阵;第6~8章介绍非线性结构及其算法,包括广义表、树、二叉树、图;第9章介绍各种常用的查找算法;第10章介绍各种常用的排序算法。
本套教材在国家规划教材的基础上,进行全面更新,以适应高校课程与教学改革的需要,并特别注意教材的可读性和可用性,为任课教师提供各种教学服务。
内容简介
本书是省精品课程的教学成果,全书共分10章,介绍各种常用的数据结构,包括线性表、栈、队列、串、数组、特殊矩阵、广义表、树、二叉树、图等;阐述各种数据结构的基本概念、逻辑关系、存储结构、操作运算及其实现算法;介绍各种常用的查找算法和排序算法,并对各种算法的性能进行分析。书中使用C++类定义各种数据结构,利用C++伪代码描述算法;给出了许多经典算法和典型题例;每章均附有小结、习题和上机实验题;附录给出了5套课程考试样卷和5道课程设计题。
本书既注重基本原理,又重视算法实现;既体现先进性,又强调实用性;内容丰富,重点突出,条理清晰,由浅入深。本书的PPT课件和相关教学资源可从江苏省精品课程和南京师范大学精品课程“数据结构”网站http://mcs.njnu.edu.cn/datastructure/index.asp下载。
本书可作为高等学校计算机、软件工程、信息与计算科学、信息管理与信息系统等专业教材,也可供计算机软件开发人员参考。
目录
第1章 绪论
1.1 数据结构课程的研究内容
1.2 基本概念及术语
1.3 算法与算法分析
1.3.1 算法
1.3.2 算法分析
本章小结
习题1
上机实验题1
第2章 线性表
2.1 线性表的基本概念
2.2 线性表的存储结构
2.2.1 顺序存储结构
2.2.2 链式存储结构
2.3 线性表的操作算法
2.3.1 顺序表的操作算法
2.3.2 链表的操作算法
2.4 线性表的应用
2.5 顺序表和链表的综合比较
本章小结
习题2
上机实验题2
第3章 栈和队列
3.1 栈
3.1.1 栈的基本概念
3.1.2 栈的存储结构
3.1.3 栈的操作算法
3.1.4 栈的应用
3.2 队列
3.2.1 队列的基本概念
3.2.2 队列的存储结构
3.2.3 队列的操作算法
3.2.4 队列的应用
本章小结
习题3
上机实验题3
第4章 串
4.1 串的基本概念
4.2 串的存储结构
4.2.1 串的顺序存储结构
4.2.2 串的链式存储结构
4.3 串的操作算法
4.3.1 串的基本操作算法
4.3.2 串的模式匹配
4.3.3 串的应用——文本编辑软件
本章小结
习题4
上机实验题4
第5章 数组和特殊矩阵
5.1 数组
5.1.1 数组的基本概念
5.1.2 数组的存储结构
5.2 特殊矩阵的压缩存储
5.2.1 对称矩阵的压缩存储
5.2.2 三角矩阵的压缩存储
5.2.3 对角矩阵的压缩存储
5.2.4 稀疏矩阵的压缩存储
本章小结
习题5
上机实验题5
第6章 广义表
6.1 广义表的基本概念
6.2 广义表的存储结构
6.2.1 广义表中结点的结构
6.2.2 广义表的存储结构举例
6.3 广义表的操作算法
6.3.1 构造算法
6.3.2 遍历广义表
6.3.3 广义表算法举例
本章小结
习题6
上机实验题6
第7章 树和二叉树
7.1 树的概念和性质
7.1.1 树的定义
7.1.2 树的基本术语
7.1.3 树的基本性质
7.2 二叉树的概念和性质
7.2.1 二叉树的定义
7.2.2 二叉树的基本性质
7.3 二叉树的存储结构
7.3.1 二叉树的顺序存储结构
7.3.2 二叉树的链式存储结构
7.4 二叉树的遍历
7.4.1 二叉树遍历的概念
7.4.2 二叉树遍历算法
7.4.3 二叉树的构造和析构算法
7.5 二叉树的其他操作算法
7.6 线索二叉树
7.6.1 线索二叉树的概念
7.6.2 线索二叉树的存储结构
7.6.3 线索二叉树的操作算法
7.7 树的存储结构与算法
7.7.1 树的存储结构
7.7.2 树的操作算法
7.8 HUFFMAN树与HUFFMAN编码
7.8.1 Huffman树的定义
7.8.2 Huffman树的构造
7.8.3 Huffman编码与译码
7.8.4 Huffman树的其他应用——程序设计流程优化
7.9 树与等价类
7.9.1 等价类问题
7.9.2 等价类的实现
7.9.3 性能分析与改进
本章小结
习题7
上机实验题7
第8章 图
8.1 图的基本概念
8.1.1 图的定义
8.1.2 图的基本术语
8.2 图的存储结构
8.2.1 邻接矩阵表示法
8.2.2 邻接表表示法
8.3 图的遍历
8.3.1 图的遍历的概念
8.3.2 深度优先搜索
8.3.3 广度优先搜索
8.3.4 图的遍历算法的应用
8.4 最小生成树
8.4.1 最小生成树的概念及其性质
8.4.2 Prim算法
8.4.3 Kruskal算法
8.5 最短路径
8.5.1 最短路径的概念
8.5.2 单源最短路径
8.5.3 每对顶点之间的最短路径
8.6 AOV网与拓扑排序
8.6.1 有向无环图与AOV网的概念
8.6.2 拓扑排序
8.7 AOE网与关键路径
8.7.1 AOE网的概念
8.7.2 关键路径
本章小结
习题8
上机实验题8
第9章 查找
9.1 查找的基本概念
9.2 顺序表的查找
9.2.1 顺序查找
9.2.2 折半查找
9.2.3 分块查找
9.3 树表的查找
9.3.1 二叉排序树
9.3.2 平衡二叉树
9.3.3 B树
9.3.4 B+树
9.4 HASH查找
9.4.1 Hash查找的基本概念
9.4.2 Hash表的构造
9.4.3 Hash查找算法及分析
本章小结
习题9
上机实验题9
第10章 排序
10.1 排序的基本概念
10.2 冒泡排序
10.3 选择排序
10.4 插入排序
10.4.1 直接插入排序
10.4.2 折半插入排序
10.5 希尔排序
10.6 快速排序
10.7 堆排序
10.8 归并排序
10.8.1 二路归并排序的非递归实现
10.8.2 二路归并排序的递归实现
10.9 基数排序
10.9.1 多关键字排序
10.9.2 链式基数排序
本章小结
习题10
上机实验题10
附录A 数据结构试题
附录B 数据结构课程设计题
参考文献
书摘插图
第1章绪论
“数据结构”是计算机科学与技术、软件工程、信息安全、信息管理与信息系统、信息与计算科学等专业的一门十分重要的专业核心基础课程,主要学习计算机中数据的组织方式、存储结构和处理方法。数据结构课程的学习将为计算机及相关专业的后续课程(如操作系统、编译原理、数据库原理、软件工程等)的学习打下基础。实际上,要编写一个“好”的程序,无非是要选择一个合理的数据结构和好的算法,而“好”算法的选择很大程度上取决于描述实际问题所采用的数据结构,因此要编写出“好”的程序,仅仅学习程序设计语言是不够的,必须很好地掌握数据结构的基本知识和基本技能。本章将概要地介绍数据结构课程的研究内容、基本概念和基本思想。
1.1数据结构课程的研究内容。
数据结构起源于程序设计,随着计算机科学技术的发展,计算机应用领域不再局限于科学计算,而更多地应用于信息处理、智能控制、办公自动化等领域。计算机处理的对象由数值发展到字符串、表格、图形、图像、声音等数据,而且处理的数据量也越来越大。在程序设计中面对这样的数据,我们应如何来组织和处理它们呢?这就是“数据结构”课程需要研究的问题。
计算机解决问题时,一般要经过几个步骤:首先,要将实际问题抽象出数学模型,然后针对数学模型设计出求解算法,最后编写程序上机调试,直到求出最终结果。数值计算问题的数学模型一般可由数学方程或数学公式来描述。然而,对于非数值计算问题,例如图书资料的检索、人一机博弈、课程表编排、最短路径求解等问题,它们的数学模型无法用数学方程或数学公式来描述,而是要用线性表、树、图等数据结构来描述,并且要对这些模型设计相应算法来求解。数据结构就是研究计算机非数值计算问题中的数据对象以及它们之间的关系和操作算法的学科,具体主要包含三个方面的内容:①数据的逻辑结构;②数据的存储结构;③数据的操作算法。
……