数据结构(C++版) 本书特色
数据结构是计算机专业教学计划中的核心课程,也是计算机及相关专业考研和水平等级考试的必考科目。要从事和计算机科学与技术相关的工作,尤其是计算机应用领域的开发和研制工作,必须具备坚实的数据结构基础。本书介绍了学习数据结构所用到的预备知识,叙述了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组和广义表、树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术。 本书内容丰富,层次清晰,讲解深入浅出,可作为计算机及相关专业本专科数据结构课程的教材,也可供从事计算机软件开发和应用的工程技术人员阅读、参考。
数据结构(C++版) 内容简介
本书希望能够引起读者对数据结构课程的兴趣,提高对数据结构课程的重要性、必要性的认识,特别希望能够提高数据结构课程的教学实效,让读者满意并有收获。在本书第1版成功的基础上,作者进行了修订,作为第2版,本书内容更贴合《计算机学科专业硕士研究生入学考试基础综合考试大纲》,可读性和实用性更强。内容包括:数组、链接表、栈和队列、递归、树与森林、图、堆与优先级队列、集合与搜索结构、排序、索引结构与散列等。 书中采用面向对象的观点讨论数据结构技术、并以兼有面向过程和面向对象过程和面向对象双重特色的C 语言作为算法的描述工具、强化基本知识和基本能力的双基训练。同时使得读者进一步掌握C 的编程思想、方法和技术内涵。数据结构(C 版)(第2版)》内容丰富,层次清晰,讲解深入浅出,可作为计算机及相关专业本、专科数据结构课程的教材,也可供从事计算机软件开发和应用的工程技术人员阅读、参考。可以从指定的网站下载本书所有的c 算法,提供于本书配套的PPT课件及习题答案。
数据结构(C++版) 目录
目录
第1章绪论
1.1为什么要学习数据结构
1.2什么是数据结构
1.2.1数据的逻辑结构
1.2.2数据的存储结构
1.2.3抽象数据类型
1.3算法与算法分析
1.3.1算法
1.3.2算法的设计要求
1.3.3算法效率的量度
1.3.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.4一元多项式求和
2.4.1一元多项式的表示
2.4.2一元多项式的求和
习题
第3章栈和队列
3.1栈
3.1.1栈的抽象数据类型定义
3.1.2栈的实现
3.2栈的应用举例
3.3栈与递归
3.4队列
3.4.1队列的抽象数据类型定义
3.4.2队列的实现
3.4.3队列的应用
习题
第4章串
4.1串类型的定义
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广义表的定义
5.2.2广义表的存储结构
5.2.3广义表的递归算法
5.2.4广义表的应用
习题
第6章树与二叉树
6.1树的定义与基本术语
6.2二叉树
6.2.1二叉树的定义
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3二叉树的遍历
6.3.1递归遍历二叉树
6.3.2应用二叉树遍历的实例
6.4线索二叉树
6.5树与森林
6.5.1树的存储表示
6.5.2森林与二叉树的转换
6.5.3树的遍历
6.5.4森林的遍历
6.6树的应用
6.6.1堆
6.6.2哈夫曼树与编码
习题
第7章集合与搜索
7.1集合及其表示
7.1.1集合的定义
7.1.2集合的抽象数据类型
7.1.3用位向量实现集合
7.2静态搜索结构
7.2.1搜索的定义
7.2.2静态搜索结构
7.2.3顺序搜索
7.2.4基于有序顺序表的折半搜索
7.2.5分块搜索
7.3二叉搜索树
7.3.1二叉搜索树的定义
7.3.2二叉搜索树的搜索
7.3.3二叉搜索树的插入
7.3.4二叉搜索树的建立
7.3.5二叉搜索树的删除
7.4AVL树
7.4.1AVL树的定义
7.4.2*小不平衡二叉树
7.4.3不平衡二叉树的调整方法
7.4.4建立平衡二叉树举例
7.5应用举例计算机登录验证
习题
第8章图
8.1图的定义
8.1.1图的定义与相关术语
8.1.2图的抽象数据类型
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.1Prim算法
8.4.2Kruskal算法
8.5*短路径
8.5.1单源*短路径
8.5.2每对顶点的*短路径
8.6拓扑排序
8.7关键路径
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.4选择排序
9.4.1直接选择排序
9.4.2堆排序
9.5归并排序
9.5.1归并排序概述
9.5.2递归的归并排序算法
9.6基数排序
9.6.1多关键码排序
9.6.2链式基数排序
9.7各种排序方法的比较讨论
9.8外部排序的方法
习题
第10章索引结构和散列
10.1静态索引结构
10.1.1线性索引
10.1.2倒排表
10.1.3m路静态索引树
10.2动态索引结构
10.2.1动态的m路静态索引树
10.2.2B_树
10.2.3B_树的插入
10.2.4B_树的删除
10.2.5B 树
10.3散列
10.3.1散列函数
10.3.2开散列方法
10.3.3闭散列方法
10.3.4散列表的实现
10.3.5散列表分析
习题
参考文献