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