数据结构——C++语言描述[电子资源.图书]

副标题:无

作   者:陈慧南编著

分类号:

ISBN:9787115129413

微信扫一扫,移动浏览光盘

简介

   本书采用面向对象的观点讨论数据结构,并使用C++语言描述。书中不仅系统地介绍各种传统的数据结构和搜索、内外排序算法,还引入一些高级数据结构,如伸展树和跳表。本书重视算法的时间和空间分析,包括搜索和排序时间的下界分析。    全书条理清晰,内容详实,既注重数据结构和算法原理,又十分强调程序设计训练。书中算法都有完整的C++程序,程序结构清晰,构思精巧。所有程序都已在VC++环境下编译通过并能正确运行,它们既是学习数据结构和算法的示例,也是很好的C++程序设计示例。本书深入浅出,配有大量的实例和图示,并有丰富的习题,适于自学。    本书可作为高等院校计算机科学与技术专业和其他相关专业的教材,也可供计算机工作者和其他希望学习数据结构和算法知识的人员参考。   

目录

第1章 基础知识
1.1 算法与数据结构
1.2 什么是数据结构
1.2.1 基本概念
1.2.2 数据的逻辑结构
1.2.3 数据的存储表示
1.2.4 数据结构的运算
1.3 数据抽象和抽象数据类型
1.3.1 抽象、数据抽象和过程抽象
1.3.2 封装与信息隐蔽
1.3.3 数据类型和抽象数据类型
1.3.4 数据结构与抽象数据类型
1.4 面向对象方法
1.4.1 面向对象方法的由来
1.4.2 面向对象方法的基本思想
1.4.3 面向对象方法的要素
1.4.4 面向对象方法和抽象数据类型
1.5 C++程序设计概要
1.5.1 函数与参数传递
1.5.2 动态存储分配
1.5.3 类与对象
1.5.4 函数和运算符重载
1.5.5 继承性和派生类
1.5.6 多态性、虚函数和动态联编
1.5.7 纯虚函数和抽象类
1.5.8 友元函数和友元类
1.5.9 模板函数和模板类
1.6 描述数据结构和算法
1.6.1 数据结构的规范
1.6.2 实现数据结构
1.7 算法和算法分析
1.7.1 算法及其性能标准
1.7.2 算法的时间复杂度
1.7.3 使用程序步分析算法
1.7.4 渐近表示法
1.7.5 算法按时间复杂度分类
1.7.6 算法的空间复杂度
本章小结
习题
第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 单链表
2.4.3 带表头结点的单链表
2.4.4 单循环链表
2.4.5 双向链表
2.5 采用模拟指针的链表
2.5.1 结点结构
2.5.2 可用空间表
2.6 异常处理
本章小结
习题
第3章 堆栈和队列
3.1 堆栈
3.1.1 堆栈ADT
3.1.2 堆栈的顺序表示
3.1.3 堆栈的链接表示
3.2 队列
3.2.1 队列ADT
3.2.2 队列的顺序表示
3.2.3 队列的链接表示
3.3 表达式计算
3.3.1 表达式
3.3.2 中缀表达式转换为后缀表达式
3.3.3 计算后缀表达式的值
3.4 演示与测试
本章小结
习题
第4章 递归
4.1 递归和递归算法
4.1.1 递归的概念
4.1.2 递归算法示例
4.1.3 递推关系
4.2 实现递归
4.2.1 函数调用和系统栈
4.2.2 递归函数的性能
4.2.3 尾递归
4.2.4 消去递归
本章小结
习题
第5章 线性表和数组ADT
5.1 线性表
5.1.1 线性表ADT
5.1.2 线性表的顺序表示
5.1.3 线性表的链接表示
5.1.4 两种存储表示的比较
5.2 一元多项式算术运算
5.2.1 多项式ADT
5.2.2 多项式的链接表示
5.2.3 项结点类
5.2.4 多项式类
5.2.5 多项式的输入和输出
5.2.6 多项式相加
5.2.7 多项式相乘
5.2.8 重载运算符函数
5.3 数组作为抽象数据类型
5.3.1 数组ADT
5.3.2 一维数组的C++类
5.4 特殊矩阵
5.4.1 对称矩阵
5.4.2?带状矩阵
5.5 稀疏矩阵
5.5.1 稀疏矩阵ADT
5.5.2 稀疏矩阵的三元组表
5.5.3 稀疏矩阵转置
5.5.4?稀疏矩阵相乘
5.6 稀疏矩阵的正交链表
5.6.1 稀疏矩阵的正交链表表示
5.6.2 正交链表结点类
5.6.3 正交链表类
5.6.4 建立正交链表
5.6.5 打印正交链表
本章小结
习题
第6章 字符串和广义表
6.1 字符串
6.1.1 字符串ADT
6.1.2 字符串的存储表示
6.1.3 串运算的实现
6.1.4 简单模式匹配算法
6.1.5?模式匹配的KMP算法
6.2 广义表
6.2.1 广义表的概念
6.2.2 广义表ADT
6.2.3 广义表的存储表示
6.2.4 广义表算法
本章小结
习题
第7章 树
7.1 树的基本概念
7.1.1 树的定义
7.1.2 基本术语
7.2 二叉树
7.2.1 二叉树的定义
7.2.2 二叉树的性质
7.2.3 二叉树ADT
7.2.4 二叉树的存储表示
7.2.5 二叉树类
7.2.6 二叉树基本运算
7.3 二叉树的遍历
7.3.1 二叉树遍历算法
7.3.2 二叉树遍历的递归算法
7.3.3 二叉树遍历的应用示例
7.4?二叉树遍历的非递归算法
7.4.1 遍历器类
7.4.2 中序遍历器类
7.4.3 后序遍历器类
7.5?二叉线索树
7.5.1 二叉线索树的定义
7.5.2 构造中序线索树
7.5.3 遍历二叉线索树
7.6 树和森林
7.6.1 森林与二叉树的转换
7.6.2 树和森林的存储表示
7.6.3 树和森林的遍历
7.7?堆和优先权队列
7.7.1 堆
7.7.2 优先权队列ADT
7.7.3 优先权队列类
7.7.4 实现优先权队列
7.8 哈夫曼树和哈夫曼编码
7.8.1 树的路径长度
7.8.2 哈夫曼树和哈夫曼算法
7.8.3 哈夫曼树类
7.8.4 构造哈夫曼树
7.8.5 哈夫曼编码
7.8.6 哈夫曼编码算法
7.9?并查集和等价关系
7.9.1 并查集ADT
7.9.2 并查集的存储表示
7.9.3 并查集类
7.9.4 函数Union和Find
7.9.5 改进的函数Union和Find
7.9.6 按等价关系分组
本章小结
习题
第8章 集合和搜索
8.1 集合及其表示
8.1.1 集合和搜索的概念
8.1.2 动态集ADT
8.1.3 集合的表示
8.2 顺序搜索
8.2.1 无序表的顺序搜索
8.2.2 有序表的顺序搜索
8.2.3 平均搜索长度
8.2.4 自组织表
8.3 二分搜索
8.3.1 二分搜索算法
8.3.2 对半搜索
8.3.3 二叉判定树
8.3.4*斐波那契搜索
8.4*搜索算法的时间下界
本章小结
习题
第9章 动态集和搜索树
9.1 二叉搜索树
9.1.1 二叉搜索树的定义
9.1.2 二叉搜索树的搜索
9.1.3 二叉搜索树的插入
9.1.4 二叉搜索树的删除
9.1.5 平均情况时间分析
9.2*二叉平衡树
9.2.1 二叉平衡树的定义
9.2.2 二叉平衡树类
9.2.3 二叉平衡树的平衡旋转
9.2.4 二叉平衡树的插入
9.2.5 二叉平衡树的删除
9.2.6 二叉平衡树的高度
9.3?伸展树
9.3.1 自调节树和伸展树
9.3.2 伸展树的伸展操作
9.3.3 伸展树类
9.3.4 旋转的实现
9.3.5 伸展树的插入运算
9.3.6 时间分析
本章小结
习题
第10章 多叉搜索树
10.1 m叉搜索树
10.2 B树
10.2.1 B树的定义
10.2.2 B树的高度
10.2.3 B树的搜索
10.2.4 B树的插入
10.2.5 B树的删除
10.2.6*B树类
10.2.7*B树的搜索运算
10.2.8*B树的插入运算
10.2.9*B树的删除运算
10.3*键树
10.3.1 键树的定义
10.3.2 双链树
10.3.3 Trie树
10.3.4 Trie树的搜索
10.3.5 Trie树的插入
10.3.6 Trie树的删除
10.3.7 Trie树性能分析
本章小结
习题
第11章 跳表和散列表
11.1 字典
11.2*跳表
11.2.1 什么是跳表
11.2.2 跳表类
11.2.3 跳表的搜索
11.2.4 跳表的插入
11.2.5 跳表的删除
11.3 散列表
11.3.1 散列技术
11.3.2 散列函数
11.3.3 拉链法
11.3.4 开地址法
11.3.5 线性探查法
11.3.6 其他开地址法
11.3.7 性能分析
本章小结
习题
第12章 图
12.1 图的基本概念
12.1.1 图的定义与术语
12.1.2 图ADT
12.2 图的存储结构
12.2.1 图的矩阵表示法
12.2.2 图的邻接矩阵实现
12.2.3 图的邻接表表示法
12.2.4 图的邻接表实现
12.3 图的遍历
12.3.1 扩充的图类
12.3.2 深度优先遍历
12.3.3 宽度优先遍历
12.3.4 基本遍历方法
12.4 拓扑排序
12.4.1 用顶点代表活动的AOV网
12.4.2 拓扑排序算法
12.4.3 实现拓扑排序算法
12.5*关键路径
12.5.1 用边代表活动的AOE网
12.5.2 关键路径算法
12.5.3 实现关键路径算法
12.6 最小代价生成树
12.6.1 基本概念
12.6.2 普里姆算法
12.6.3*克鲁斯卡尔算法
12.6.4*算法正确性
12.7 单源最短路径
12.7.1 最短路径问题
12.7.2 迪杰斯特拉算法
12.7.3 数据结构选择
12.7.4 实现迪杰斯特拉算法
12.8*所有顶点之间的最短路径
12.8.1 弗洛伊德算法
12.8.2 实现弗洛伊德算法
本章小结
习题
第13章 内排序
13.1 基本概念
13.2 插入排序
13.2.1 直接插入排序
13.2.2 顺序表直接插入排序
13.2.3?单链表直接插入排序
13.2.4?希尔排序
13.3 选择排序
13.3.1 简单选择排序
13.3.2*堆排序
13.4 交换排序
13.4.1 冒泡排序
13.4.2 快速排序
13.4.3 快速排序算法
13.4.4?快速排序性能分析
13.5 两路合并排序
13.5.1 合并两个有序序列
13.5.2 顺序表两路合并排序
13.5.3?合并排序的递归算法
13.5.4?单链表两路合并排序
13.6?排序算法的时间下界
13.7?基数排序
13.7.1 分配排序
13.7.2 基数排序算法
13.7.3 基数排序C++程序
本章小结
习题
第14章?文件和外排序
14.1 辅助存储器简介
14.1.1 主存储器和辅助存储器
14.1.2 磁盘存储器
14.2 文件
14.2.1 文件的基本概念
14.2.2 文件的组织方式
14.3 文件的索引结构
14.3.1 静态索引结构
14.3.2 动态索引结构
14.4 外排序
14.4.1 外排序的基本过程
14.4.2 初始游程的生成
14.4.3 多路合并
14.4.4 最佳合并树
本章小结
习题
附录A 实习要求和实习题
A.1 面向对象方法概述
A.2 实习目的
A.3 实习要求
A.4 实习步骤
A.5 实习报告
A.6 实习题
附录B 专有名词中英文对照表
参考文献

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

数据结构——C++语言描述[电子资源.图书]
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon