图书目录

目录

扫一扫

源码下载

第一部分基础篇

第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

参考文献