目录
扫一扫
源码下载
第一部分基础篇
第1章Python语言程序设计基础
1.1Python基础知识
1.1.1Python概述及运行环境
1.1.2Python的变量和数据类型
1.1.3Python的运算符
1.1.4函数
1.1.5输入、输出和文件
1.1.6异常处理
1.1.7模块
1.2Python面向对象编程
1.2.1面向对象的基本概念
1.2.2类的定义和使用
1.2.3继承与派生
1.2.4迭代器与生成器
1.3与数据结构和算法相关的Python模块
1.3.1抽象基类和abc模块
1.3.2ctypes模块
1.3.3array模块
1.3.4NumPy模块
1.3.5collections模块
1.4上机实验
习题1
第二部分数据结构与算法篇
第2章数据结构概述
2.1基本概念
2.1.1数据与数据结构
2.1.2数据类型
2.2“数据结构”课程讨论的内容
2.3算法及性能分析
2.3.1算法
2.3.2算法分析基础
2.3.3同一问题的不同算法
2.4上机实验
习题2
第3章线性表
3.1线性表的基本概念
3.2线性表的抽象数据类型
3.3线性表的顺序存储及实现
3.3.1线性表顺序存储的基本方法
3.3.2Python列表的内部实现
3.3.3基于Python列表的实现
3.3.4基于底层C数组的实现
3.4线性表的链式存储及实现
3.4.1单链表
3.4.2循环链表
3.4.3双向链表
3.5顺序表与链表实现小结
3.5.1顺序表与链表的比较
3.5.2各种链表实现的比较
3.5.3自顶向下的数据结构实现
3.5.4算法设计的基本步骤
3.6线性表的应用
3.6.1求两个线性表的相同元素
3.6.2约瑟夫环问题
3.7线性表算法举例
3.7.1顺序表下的算法
3.7.2带头结点单链表下的算法
3.7.3与线性表具体实现无关的算法
3.8上机实验
习题3
第4章栈
4.1栈的基本概念
4.2栈的抽象数据类型
4.3栈的顺序存储及实现
4.3.1利用Python列表实现
4.3.2记录容量和栈顶位置的实现
4.4栈的链式存储及实现
4.5栈的典型应用
4.5.1括号匹配检验
4.5.2计算后缀表达式的值
4.5.3计算中缀表达式的值
4.5.4迷宫求解
4.6上机实验
习题4
第5章队列
5.1队列的基本概念
5.2队列的抽象数据类型
5.3队列的顺序存储及实现
5.3.1物理模型法
5.3.2线性顺序队列
5.3.3循环队列
5.4队列的链式存储及实现
5.5队列的应用
5.5.1杨辉三角形的输出
5.5.2一元多项式的计算
5.5.3基于队列的迷宫求解
5.6双端队列
5.6.1双端队列的基本概念
5.6.2Python的双端队列类
5.6.3双端队列的应用
5.7优先级队列
5.8Python提供的多种队列
5.9上机实验
习题5
第6章递归
6.1递归及递归算法
6.1.1什么是递归
6.1.2问题求解方法的递归定义
6.2线性表下递归算法的设计
6.2.1数据结构的递归定义
6.2.2顺序表下的递归算法
6.2.3单链表下的递归算法
6.3递归求解举例
6.3.1n皇后问题
6.3.2迷宫求解
6.3.3组合数求解
6.4递归算法性能分析
6.4.1函数调用与栈
6.4.2递归函数的运行过程及性能分析
6.4.3递归函数转换为非递归函数
6.5常见的算法设计模式
6.5.1穷举算法
6.5.2贪心算法
6.5.3递归算法
6.5.4带备忘录的递归算法
6.5.5动态规划法
6.6上机实验
习题6
第7章字符串和数组
7.1字符串
7.1.1字符串的基本概念
7.1.2字符串的抽象数据类型
7.1.3字符串的存储
7.1.4字符串的匹配
7.2数组
7.2.1数组相关概念
7.2.2表格的存储
7.2.3特殊矩阵的压缩存储
7.2.4数组的应用
7.3上机实验
习题7
第8章二叉树
8.1基础知识
8.1.1二叉树的基本概念
8.1.2相关术语
8.1.3一些特殊的二叉树
8.1.4二叉树的抽象数据类型
8.2二叉树的性质
8.3二叉树的存储结构及实现
8.3.1二叉树的顺序存储
8.3.2二叉树的嵌套列表存储
8.3.3二叉树的链式存储及实现
8.4二叉树的操作
8.4.1二叉树的遍历
8.4.2二叉树遍历的递归算法
8.4.3二叉树的递归算法举例
8.4.4二叉树的非递归遍历
8.4.5二叉树的创建
8.4.6二叉树的图形化输出
8.5堆与优先级队列
8.5.1二叉堆的定义
8.5.2二叉堆的主要操作
8.5.3二叉堆的实现
8.6哈夫曼树及其应用
8.6.1哈夫曼树的相关概念
8.6.2哈夫曼树的构造
8.6.3哈夫曼编码
8.7上机实验
习题8
第9章树
9.1基础知识
9.1.1树的基本概念
9.1.2树的抽象数据类型
9.1.3树的性质
9.2树的存储结构
9.2.1双亲表示法
9.2.2孩子链表表示法
9.2.3孩子兄弟链表表示法
9.3树与二叉树的转换
9.3.1树转换为二叉树
9.3.2二叉树转换为树
9.3.3森林转换为二叉树
9.3.4二叉树转换为森林
9.4树与森林的遍历
9.4.1树的遍历
9.4.2森林的遍历
9.5树的实现
9.5.1树的孩子兄弟链表结点类
9.5.2树的孩子兄弟链表类
9.6上机实验
习题9
第10章图
10.1基础知识
10.1.1图的定义
10.1.2图的相关术语
10.1.3图的抽象数据类型
10.2图的存储结构及实现
10.2.1邻接矩阵
10.2.2邻接表
10.3图的遍历
10.3.1深度优先搜索
10.3.2广度优先搜索
10.3.3遍历算法的应用
10.4最小生成树
10.4.1Prim算法
10.4.2Kruskal算法
10.5最短路径
10.5.1单源点最短路径
10.5.2每对顶点间的最短路径
10.6拓扑排序
10.6.1概述
10.6.2广度优先拓扑排序
10.6.3深度优先拓扑排序
10.7关键路径
10.7.1相关概念
10.7.2算法设计
10.7.3算法实现
10.8上机实验
习题10
第三部分查找与排序篇
第11章查找
11.1基础知识
11.1.1相关概念
11.1.2查找的分类
11.1.3查找算法的性能衡量
11.1.4查找表的抽象数据类型
11.1.5记录类型的定义
11.2线性表下的查找
11.2.1基于无序线性表的查找
11.2.2基于有序线性表的查找
11.2.3索引顺序表及分块查找
11.2.4查找算法性能的下界
11.3二叉树下的查找
11.3.1二叉查找树
11.3.2平衡二叉树
11.4哈希表查找
11.4.1哈希表的定义
11.4.2哈希函数设计方法
11.4.3解决冲突的方法
11.4.4哈希表的实现
11.4.5哈希查找性能分析
11.5Python的集合和字典
11.6查找小结
11.7上机实验
习题11
第12章排序
12.1基础知识
12.1.1相关概念
12.1.2排序表的类型定义
12.1.3排序的分类
12.1.4排序算法的性能衡量
12.2插入排序
12.2.1直接插入排序
12.2.2折半插入排序
12.2.3希尔排序
12.3交换排序
12.3.1冒泡排序
12.3.2快速排序
12.4选择排序
12.4.1简单选择排序
12.4.2堆排序
12.5归并排序
12.5.1自底向上的归并排序
12.5.2自顶向下的归并排序
12.6基数排序
12.6.1多关键字排序
12.6.2链式基数排序
12.7各种排序算法的比较
12.8高级语言中使用的排序
12.8.1C++标准模板库中的排序
12.8.2TimSort排序
12.9上机实验
习题12
参考文献