顶部
收藏

数据结构(第2版)

“十二五”普通高等教育本科国家级规划教材

作者:
刘大有 虞强源 杨博 王生生 姜丽 等
定价:
56.00元
ISBN:
978-7-04-030213-4
版面字数:
950.000千字
开本:
16开
全书页数:
655页
装帧形式:
平装
重点项目:
“十二五”普通高等教育本科国家级规划教材
出版时间:
2010-09-10
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
计算机类专业核心课程
三级分类:
数据结构

本书是国家精品课程“数据结构”的研究成果之一,是面向21世纪课程教材和普通高等教育“十一五”国家级规划教材。本书系统介绍了数据结构的概念、原理与技术,主要内容包括绪论,基本数据结构,排序、查找与内存管理,相关工具和文件等。其中,第一章绪论主要对算法描述语言(ADL)、算法书写规范、数据结构与算法基本概念、算法分析基础和算法正确性证明等进行了介绍;第二至五章是基本数据结构部分,主要涉及线性表、堆栈和队列,数组和字符串,树与二叉树,图结构等内容;第七至九章从算法的视角讨论了排序、查找和内存管理等方面的内容,给出了若干典型算法的描述、时间复杂性分析和相关算法的比较等;第六章和十一章分别对递归和随机数两种主要工具进行了讲解,其中随机数是数据结构的新内容;文件这种复杂的数据结构则在第十章中阐明。

本书的附录主要包括书中ADL算法的C++程序、一些基本数据结构的C++类实现以及习题答案或解题思路。本书配套教学资源中包括电子教案、ADL算法的C++程序、较难习题答案的C++代码以及相关的测试和运行支持程序,可供读者自学和上机使用。

本书可作为高等学校计算机相关专业的教材和教学参考书,也可供相关专业的工程技术人员参考使用。

  • 第一章 绪论
    • 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.4 算法的正确性证明
    • 1.5 算法分析基础
      • 1.5.1 算法时间复杂性的分析方法
      • 1.5.2 复杂性函数的渐近表示
      • 1.5.3 算法时间与空间分析
      • 1.5.4 计算复杂性和算法的效率
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第二章 线性表、堆栈和队列
    • 2.1 线性表的定义和基本操作
    • 2.2 线性表的顺序存储结构
    • 2.3 线性表的链接存储结构
      • 2.3.1 单链表
      • 2.3.2 循环链表
      • 2.3.3 双向链表
    • 2.4 复杂性分析
    • 2.5 堆栈
      • 2.5.1 堆栈的定义和基本操作
      • 2.5.2 顺序栈
      • 2.5.3 链式栈
      • 2.5.4 顺序栈与链式栈的比较
      • 2.5.5 堆栈应用——括号匹配
    • 2.6 队列
      • 2.6.1 队列的定义和基本操作
      • 2.6.2 顺序队列
      • 2.6.3 链式队列
      • 2.6.4 顺序队列与链式队列的比较
      • 2.6.5 队列与堆栈的扩展
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第三章 数组和字符串
    • 3.1 数组
      • 3.1.1 数组的存储和寻址
      • 3.1.2 一维数组类
    • 3.2 矩阵
      • 3.2.1 矩阵类
      • 3.2.2 特殊矩阵
      • 3.2.3 三元组表
      • 3.2.4 十字链表
    • 3.3 字符串
      • 3.3.1 字符串的定义与字符串类
      • 3.3.2 模式匹配算法
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第四章 树
    • 4.1 树的基本概念
      • 4.1.1 树的定义
      • 4.1.2 树的相关术语
    • 4.2 二叉树
      • 4.2.1 二叉树定义和主要性质
      • 4.2.2 二叉树顺序存储
      • 4.2.3 二叉树链接存储
      • 4.2.4 二叉树遍历
      • 4.2.5 创建二叉树
      • 4.2.6 复制二叉树
    • 4.3 线索二叉树
      • 4.3.1 线索二叉树定义
      • 4.3.2 线索二叉树存储
      • 4.3.3 线索二叉树基本算法
    • 4.4 树和森林
      • 4.4.1 树与二叉树的转换
      • 4.4.2 树的顺序存储
      • 4.4.3 树的链接存储
      • 4.4.4 树和森林的遍历
    • 4.5 压缩与哈夫曼树
      • 4.5.1 文件编码
      • 4.5.2 扩充二叉树
      • 4.5.3 哈夫曼树和哈夫曼编码
    • 4.6 应用
      • 4.6.1 表达式求值
      • 4.6.2 分类与决策树
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第五章 图
    • 5.1 图的基本概念
    • 5.2 图的存储结构与类定义
      • 5.2.1 存储结构
      • 5.2.2 Graph类
    • 5.3 图的遍历算法
      • 5.3.1 深度优先遍历
      • 5.3.2 广度优先遍历
    • 5.4 拓扑排序
    • 5.5 关键路径
    • 5.6 最短路径问题
      • 5.6.1 无权最短路径问题
      • 5.6.2 正权最短路径问题
      • 5.6.3 每对顶点之间的最短路径
    • 5.7 最小支撑树
      • 5.7.1 普里姆算法
      • 5.7.2 克鲁斯卡尔算法
    • 5.8 图的应用
      • 5.8.1 可及性与Warshall算法
      • 5.8.2 连通分量
      • 5.8.3 图在网络分析和信息检索中的应用
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第六章 递归
    • 6.1 递归的定义
    • 6.2 基本递归过程
    • 6.3 递归过程实现与堆栈
    • 6.4 递归法求解问题
      • 6.4.1 委员会问题
      • 6.4.2 回溯
    • 6.5 递归的效率
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第七章 排序
    • 7.1 排序问题的基本概念
    • 7.2 插入排序
      • 7.2.1 直接插入排序
      • 7.2.2 Shell排序
    • 7.3 交换排序
      • 7.3.1 冒泡排序
      • 7.3.2 快速排序
    • 7.4 选择排序
      • 7.4.1 直接选择排序
      • 7.4.2 堆排序
    • 7.5 合并排序
    • 7.6 基于关键词比较的排序算法分析
      • 7.6.1 平方阶排序算法及改进算法
      • 7.6.2 线性对数阶排序算法
      • 7.6.3 分治排序的一般方法
      • 7.6.4 基于关键词比较的排序算法下界
    • 7.7 分布排序
      • 7.7.1 基数分布
      • 7.7.2 值分布
    • 7.8 外排序
      • 7.8.1 外存储器
      • 7.8.2 磁带排序
      • 7.8.3 磁盘排序
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第八章 查找
    • 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.3.3 平均情况时间分析
    • 8.4 最优二叉查找树
      • 8.4.1 访问频率
      • 8.4.2 最优二叉查找树
      • 8.4.3 近似最优树的构造
    • 8.5 平衡树
      • 8.5.1 高度平衡树
      • 8.5.2 重量平衡树
    • 8.6 红黑树
      • 8.6.1 红黑树的性质
      • 8.6.2 旋转
      • 8.6.3 插入
      • 8.6.4 删除
    • 8.7 B树及其变形树
      • 8.7.1 多叉树
      • 8.7.2 B树
      • 8.7.3 B树变形树
    • 8.8 数字查找
      • 8.8.1 检索结构查找
      • 8.8.2 数字树查找
    • 8.9 散列
      • 8.9.1 散列函数
      • 8.9.2 冲突调节
      • 8.9.3 删除
      • 8.9.4 重量平衡树的应用——按位置查找
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第九章 内存管理
    • 9.1 概述
    • 9.2 均匀大小记录的分配和回收算法
      • 9.2.1 记录分配算法
      • 9.2.2 访问计数器法
      • 9.2.3 废料收集方法
    • 9.3 不同大小记录的分配和回收算法
      • 9.3.1 查找分配策略
      • 9.3.2 边界标识法
      • 9.3.3 压缩分配
    • 9.4 伙伴系统
      • 9.4.1 伙伴系统概述
      • 9.4.2 分配记录和释放记录算法
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第十章 文件
    • 10.1 文件的基本概念
      • 10.1.1 文件及其分类
      • 10.1.2 文件的逻辑结构与存储结构
    • 10.2 顺序文件
      • 10.2.1 顺序无序文件
      • 10.2.2 顺序有序文件
      • 10.2.3 增补文件
    • 10.3 散列文件
      • 10.3.1 散列文件
      • 10.3.2 可扩充的散列文件
    • 10.4 索引文件
      • 10.4.1 动态索引结构和静态索引结构
      • 10.4.2 ISAM文件
      • 10.4.3 VSAM文件
    • 10.5 多关键字文件
      • 10.5.1 多重链表文件
      • 10.5.2 倒排文件
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 第十一章 随机数
    • 11.1 生成随机数
      • 11.1.1 均匀分布随机数
      • 11.1.2 其他分布随机数
    • 11.2 随机数检验
      • 11.2.1 一般检验方法
      • 11.2.2 经验检验方法
    • 11.3 随机排列与随机组合
      • 11.3.1 随机排列
      • 11.3.2 随机组合
    • 11.4 应用
      • 11.4.1 随机算法
      • 11.4.2 使用随机数的快速排序算法
    • 小结
    • 参考文献与推荐读物
    • 习题
  • 附录
    • 附录1 各章算法的C++实现
    • 附录2 习题参考答案或解题思路

相关图书