目录


第1章绪论/1
11算法/1
1.1.1算法的基本概念/1
1.1.2算法的表示/2
1.1.3算法的设计/4
12算法的分析评价/6
1.2.1时间复杂度分析/6
1.2.2时间复杂度分析举例/8
1.2.3空间复杂度分析/10
13数据结构/11
1.3.1数据与数据结构定义/11
1.3.2数据类型与数据抽象/15
1.3.3抽象数据类型/16
1.3.4数据结构和算法的关系/17
小结/18
习题/19
第2章Python编程基础/20
21Python数据类型/20
2.1.1常用数据类型/20
2.1.2变量、运算符和表达式/21
2.1.3内置数据类型的常见运算和操作/23
22Python控制结构/27
2.2.1顺序结构/27
2.2.2选择结构/28
2.2.3循环结构/30
23Python函数/34
2.3.1函数概述/34
2.3.2函数的声明和调用/34
2.3.3参数传递/36
2.3.4函数的返回值/38
2.3.5变量的作用域/38
2.3.6函数式编程/40
24Python面向对象编程/42
2.4.1面向对象程序设计/42
2.4.2类的定义和实例化/43
2.4.3属性/45
2.4.4方法/47
2.4.5类的继承/48
2.4.6类的特殊方法/50
2.4.7对象的引用、浅拷贝和深拷贝/54
25抽象数据类型面向对象实现/55
2.5.1抽象数据类型和面向对象方法/55
2.5.2有理数的抽象数据类型表示/55
2.5.3有理数抽象数据类型的Python语言实现/56
小结/58
习题/58
第3章线性表/63
31线性表的概念/63
3.1.1基本术语和概念/63
3.1.2线性表的操作/64
3.1.3线性表的实现基础/65
32顺序表/65
3.2.1顺序表的定义/65
3.2.2顺序表的基本实现/66
3.2.3顺序表例题/68
33单链表/69
3.3.1单链表的定义/69
3.3.2单链表的基本实现/70
3.3.3单链表基本操作的实现/72
3.3.4单链表例题/76
34链表的变形与操作/80
3.4.1带尾结点引用的单链表/80
3.4.2循环单链表/82
3.4.3双向链表/86
3.4.4不同结构链表总结/89
35有序表及其应用/90
3.5.1有序表的定义/90
3.5.2有序表例题/90
小结/92
习题/93
第4章字符串/98
41字符串的概念/98
4.1.1基本术语和概念/98
4.1.2串的基本操作/99
4.1.3Python中的字符串/100
4.1.4基本串操作例题/100
42字符串匹配算法/103
4.2.1字符串匹配/103
4.2.2朴素的串匹配算法/103
4.2.3无回溯串匹配算法(KMP算法)/105
4.2.4串模式匹配例题/110
小结/114
习题/114
第5章栈和队列/116
51栈的概念与实现/116
5.1.1栈的结构和操作特点/116
5.1.2栈的表示和实现/117
52栈的应用举例/121
5.2.1括号匹配问题/122
5.2.2后缀表达式求值/124
5.2.3从中缀表达式到后缀表达式的转换/126
53队列的概念与实现/129
5.3.1队列的结构特点与操作/129
5.3.2队列的表示和实现/130
54双端队列/134
小结/136
习题/137
第6章递归/142
61递归的定义/142
6.1.1基本概念/142
6.1.2简单递归操作例题/143
6.1.3汉诺塔问题/146
62递归的可视化/147
6.2.1递归执行过程/147
6.2.2递归过程可视化/147
6.2.3递归图形化展示/149
63回溯法/150
6.3.1回溯的概念/150
6.3.2组合问题/151
6.3.3回溯法例题/153
64动态规划初步/157
6.4.1动态规划的概念/157
6.4.2动态规划的应用/158
6.4.3动态规划例题/161
小结/162
习题/162
第7章二叉树和树/166
71树状结构基本概念/166
7.1.1树的定义和基本术语/166
7.1.2树状结构的描述/167
7.1.3二叉树的概念/168
7.1.4二叉树的性质/169
72二叉树的存储/171
7.2.1二叉树的顺序存储/171
7.2.2二叉树的链式存储/171
73二叉树的遍历及其实现/172
7.3.1二叉树按层次遍历的实现/173
7.3.2二叉树深度优先遍历的递归实现/175
7.3.3二叉树深度优先遍历的非递归实现/179
74二叉树遍历算法的应用/180
75优先队列与堆/188
7.5.1优先队列的概念及应用/188
7.5.2堆的概念及实现/190
76哈夫曼树/195
7.6.1基本概念/195
7.6.2Huffman树的构造/196
7.6.3最优前缀编码/198
77树和森林的存储和遍历 /199
7.7.1树和森林的遍历/199
7.7.2树的存储表示/200
7.7.3树的遍历算法实现/204
小结/207
习题/208
第8章图及其算法/213
81图的概念/213
8.1.1基本术语和概念/213
8.1.2其他术语和概念/214
82图的表示与实现/216
8.2.1邻接矩阵/216
8.2.2邻接表/217
8.2.3图表示的Python实现/218
83图的遍历及其应用/223
8.3.1深度优先遍历图/223
8.3.2广度优先遍历图/225
8.3.3图遍历算法的简单应用/226
8.3.4图遍历算法的高阶应用/228
84拓扑排序/234
85并查集/236
86连通网的最小生成树/242
87最短路径问题/246
8.7.1单源最短路径的Dijkstra算法/247
8.7.2求解任意顶点间最短路径的Floyd算法/248
小结/249
习题/250
第9章排序和查找/255
91查找/255
9.1.1基本术语和概念/255
9.1.2顺序查找/256
9.1.3二分查找/258
92排序/263
9.2.1基本术语和概念/263
9.2.2选择排序/265
9.2.3冒泡排序/267
9.2.4插入排序/269
9.2.5希尔排序/273
9.2.6归并排序/275
9.2.7快速排序/278
小结/280
习题/280
附录ALeetCode网站在线编程说明/283
参考文献/285