《数据结构与算法入门到提高(Python语言实现)》面向零基础的读者,全面讲解了数据结构和算法的相关知识。全书共8章,首先介绍了相关概念和Python语言的基本情况,再讲解核心知识:线性表、栈、队列、树、图等数据结构,最后解读了查找、排序等算法及Python的相关库和模块实现多种数据结构的方法。全书内容通俗易懂、文字精练,搭配相关例题和案例,可快速理解重点、难点。同时,本书附有代码,且对代码均做了详尽的解析,可轻松上手实操,对初学者非常友好。
本书适合数据结构和算法的初学者阅读学习,也可作为高校计算机及相关专业的教材使用。
第1章 绪论001
1.1 计算机程序是什么 002
1.2 常见的数据结构 002
1.3 抽象数据类型(ADT) 004
1.4 算法及其作用 005
1.4.1 算法的定义和性质 005
1.4.2 算法和算法分析 005
第2章 Python语言基础009
2.1 Python的安装 010
2.2 Python的基本语法 012
2.2.1 数据类型和变量 012
2.2.2 Python的基本语法结构 013
2.3 重要内置数据类型 019
2.3.1 字符串(str) 019
2.3.2 列表(list) 020
2.3.3 元组(tuple) 021
2.3.4 集合(set) 021
2.3.5 字典(dict) 021
2.4 函数 022
2.4.1 函数定义 022
2.4.2 匿名函数 023
2.5 类 023
2.6 变量作用域 025
2.7 异常处理 027
第3章 基本数据结构029
3.1 线性表 030
3.1.1 线性表的概念和性质 030
3.1.2 线性表的数据操作 030
3.1.3 线性表的顺序存储及数据操作 030
3.1.4 用Python实现线性表的链式存储及数据操作 035
3.2 栈 060
3.2.1 栈的数据操作 062
3.2.2 用Python实现栈的顺序存储及数据操作 062
3.2.3 用Python实现栈的链式存储及数据操作 062
3.2.4 栈的简单应用:判断表达式括号是否匹配 064
3.3 队列 072
3.3.1 队列的数据操作 073
3.3.2 用Python实现队列的顺序存储及数据操作 073
3.3.3 用Python实现队列的链式存储及数据操作 074
3.3.4 队列的简单应用:打印杨辉三角 075
第4章 树081
4.1 树的基本概念 085
4.2 二叉树 087
4.2.1 二叉树的数据操作 088
4.2.2 二叉树的实现以及二叉树的遍历 088
4.3 二叉搜索树 091
4.3.1 基本概念 091
4.3.2 二叉搜索树的数据操作 092
4.3.3 Python实现二叉搜索树 093
4.4 二叉树的层序遍历 101
4.5 特殊的完全二叉树-堆 117
4.5.1 小根堆(最小堆) 117
4.5.2 大根堆(最大堆) 122
第5章 图127
5.1 图的概念、性质和数据类型 128
5.1.1 概念和性质 128
5.1.2 图的抽象数据类型 130
5.2 用Python实现图的存储结构 130
5.2.1 邻接矩阵实现 130
5.2.2 邻接表实现 135
5.2.3 邻接矩阵和邻接表的比较 138
5.3 图的遍历 139
5.3.1 深度优先搜索 139
5.3.2 广度优先搜索 143
5.4 生成树、生成森林和最小生成树 146
5.4.1 克鲁斯卡尔算法 148
5.4.2 普里姆算法 152
第6章 查找163
6.1 线性查找 165
6.2 二分查找 166
6.3 插值查找 170
6.4 斐波那契查找 171
6.5 散列查找/哈希查找 174
第7章 排序179
7.1 选择排序 180
7.1.1 选择排序的算法 180
7.1.2 选择排序的程序 180
7.2 插入排序 181
7.2.1 插入排序的算法 181
7.2.2 插入排序的程序 182
7.3 希尔排序 183
7.3.1 希尔排序的算法 183
7.3.2 希尔排序的程序 185
7.4 冒泡排序 185
7.4.1 冒泡排序的算法 185
7.4.2 冒泡排序的程序 188
7.5 快速排序 189
7.5.1 快速排序的算法 189
7.5.2 快速排序的程序 193
第8章 Python标准库的数据结构模块195
8.1 queue(队列)模块 196
8.2 queue的先进先出队列(FIFO) 199
8.3 queue模块的优先队列 200
8.4 collections模块实现双端队列 201
8.5 heapq模块实现堆 204
附录 函数father_bst() 208