本书在选材与编排上, 贴近当前普通高等院校“数据结构”课程的现状和发展趋势, 内容难度适度, 突出实用性和应用性。在内容选取与结构上, 本书并未对各种数据结构面面俱到, 而是通过分类和讲解典型结构, 使读者形成对数据结构的宏观认识。根据内容侧重, 本书共分为8章, 分别为绪论、线性表、栈和队列、串和数组、树形结构、图、内排序和查找。
本书在选材与编排上,贴近当前普通高等院校“数据结构”课程的现状和发展趋势,内容难度适度,突出实用性和应用性。
配套微课视频、教学课件、教学大纲、习题答案、源代码等资源
《数据结构(Python版)》于2019年4月正式出版以来,经过了几次印刷,许多高等学校已将其作为“数据结构”课程的教材。本书不仅深受这些学校师生的钟爱,而且也获得了良好的社会效益。但从另外一个角度来看,作者有责任和义务维护好这本书的质量,及时更新本书的内容,做到与时俱进。
本书修订内容如下。
(1) 重新对每章内容进行了梳理。
(2) 第2~8章中,每章都增加了实验题及其解答,便于提高读者动手能力。
(3) 针对每章章后的应用题,重新对程序进行了运行和调试,使习题答案准确无误。
(4) 针对每章的重点或难点的算法和实验,配置了微课视频进行讲解。
(5) 删去了附录A的考试试题,而是将试题及其答案作为教辅资源,供读者下载。
希望通过这样的修订,让更多的教师和学生喜欢本书,也希望本书信息容量大、知识性强的特色能够很好地延续下去。
本书的作者为吕云翔、郭颖美、孟爻、吴宜航、杨壮,曾洪立参与了部分内容的编写并进行了素材整理及配套资源制作等。
书中如有不当,请读者不吝赐教,及时提出宝贵意见。
作者
2023年3月
第1章绪论
1.1引言
1.1.1学习目的
1.1.2课程内容
1.2基本概念
1.2.1数据与数据结构
1.2.2数据类型与抽象数据类型
1.3算法
1.3.1算法的概念
1.3.2算法描述
1.3.3算法分析
小结
习题1
第2章线性表
2.1线性表及其基本操作
2.1.1线性表的基本概念
2.1.2抽象数据类型描述
2.1.3线性表的存储和实现
2.2线性表的顺序存储
2.2.1顺序表
2.2.2顺序表的基本操作实现
2.3线性表的链式存储和实现
2.3.1单链表
2.3.2单链表的基本操作实现
2.3.3其他链表
2.4顺序表与链表的比较
2.5实验
2.5.1数字加1
2.5.2只出现一次的数字
2.5.3合并有序链表
小结
习题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.2.5优先级队列
3.3栈和队列的比较
3.4实验
3.4.1用队列实现栈
3.4.2用栈实现队列
3.4.3栈的最小值
小结
习题3
第4章串和数组
4.1串
4.1.1串的基本概念
4.1.2串的抽象数据类型描述
4.1.3顺序串
4.1.4链串
4.2串的模式匹配
4.2.1Brute Force算法
4.2.2KMP算法
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
第5章树结构
5.1树
5.1.1树的基本概念
5.1.2树的术语
5.2二叉树
5.2.1二叉树的基本概念
5.2.2二叉树的性质
5.2.3二叉树的存储结构
5.2.4二叉树的遍历
5.2.5二叉树遍历算法的应用
5.2.6二叉树的建立
5.3哈夫曼树及哈夫曼编码
5.3.1哈夫曼树的基本概念
5.3.2哈夫曼树的构造
5.3.3哈夫曼编码
5.3.4构造哈夫曼树和哈夫曼编码的类的描述
5.4树和森林
5.4.1树的存储结构
5.4.2树的遍历规则
5.5实验
5.5.1二叉树剪枝
5.5.2相同的树
5.5.3翻转二叉树
小结
习题5
第6章图
6.1图概述
6.1.1图的基本概念
6.1.2图的抽象数据类型描述
6.2图的存储结构
6.2.1邻接矩阵
6.2.2邻接表
6.3图的遍历
6.4最小生成树
6.4.1最小生成树的基本概念
6.4.2Kruskal算法
6.4.3Prim算法
6.5最短路径
6.5.1单源最短路径
6.5.2求任意两个顶点间的最短路径
6.6拓扑排序和关键路径
6.6.1拓扑排序
6.6.2关键路径
6.7实验
6.7.1寻找图中是否存在路径
6.7.2最小花费
小结
习题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.5归并排序
7.6实验
7.6.1投票排序
7.6.2查找缺失的数字
7.6.3检查高度
小结
习题7
第8章查找
8.1查找的基本概念
8.1.1什么是查找
8.1.2查找表
8.1.3平均查找长度
8.2静态表查找
8.2.1顺序查找
8.2.2二分查找
8.2.3分块查找
8.3动态表查找
8.3.1二叉排序树查找
8.3.2平衡二叉树
8.3.3B-树和B 树
8.4哈希表查找
8.4.1哈希表的概念
8.4.2哈希函数
8.4.3解决冲突的方法
8.4.4哈希表查找性能分析
8.5实验
8.5.1二叉搜索树的最小绝对差
8.5.2查找插入位置
8.5.3排序矩阵查找
小结
习题8
附录A实践题
第2章线性表
第3章栈和队列
第4章串和数组
第5章树结构
第6章图
第7章排序
第8章查找
参考文献