互联网
                       类型
                        8.9
                       豆瓣评分
                        可以朗读
                       语音朗读
                        304千字
                       字数
                        2021-07-01
                       发行日期
                    展开全部
                    
主编推荐语
本书用Python语言来讲解数据结构及实现方法。
内容简介
全书首先概述Python编程的功能,这些功能是实际编程和解决问题时所必需的;其次介绍抽象数据类型的规范、实现和应用,多项集类型,以及接口和实现之间的重要差异;随后介绍线性多项集、栈、队列和列表;最后介绍树、图等内容。
目录
- 版权信息
 - 版权声明
 - 内容提要
 - 作者简介
 - 致谢
 - 前言
 - 服务与支持
 - 第1章 Python编程基础
 - 1.1 基本程序要素
 - 1.1.1 程序和模块
 - 1.1.2 Python的示例程序:猜数字
 - 1.1.3 编辑、编译并运行Python程序
 - 1.1.4 程序注释
 - 1.1.5 词法元素
 - 1.1.6 拼写和命名惯例
 - 1.1.7 语法元素
 - 1.1.8 字面值
 - 1.1.9 运算符和表达式
 - 1.1.10 函数调用
 - 1.1.11 print函数
 - 1.1.12 input函数
 - 1.1.13 类型转换函数和混合模式操作
 - 1.1.14 可选和关键字函数参数
 - 1.1.15 变量和赋值语句
 - 1.1.16 Python的数据类型
 - 1.1.17 import语句
 - 1.1.18 获取关于程序组件的帮助
 - 1.2 控制语句
 - 1.2.1 条件语句
 - 1.2.2 使用if __name__ == "__main__"
 - 1.2.3 循环语句
 - 1.3 字符串及其运算
 - 1.3.1 运算符
 - 1.3.2 格式化字符串以便输出
 - 1.3.3 对象和方法调用
 - 1.4 Python内置的多项集及其操作
 - 1.4.1 列表
 - 1.4.2 元组
 - 1.4.3 遍历整个序列
 - 1.4.4 字典
 - 1.4.5 搜索一个值
 - 1.4.6 通过模式匹配来访问多项集
 - 1.5 创建新函数
 - 1.5.1 函数定义
 - 1.5.2 递归函数
 - 1.5.3 函数的嵌套定义
 - 1.5.4 高阶函数
 - 1.5.5 使用lambda表达式创建匿名函数
 - 1.6 捕获异常
 - 1.7 文件及其操作
 - 1.7.1 文本文件的输出
 - 1.7.2 将数字写入文本文件
 - 1.7.3 从文本文件读取文本
 - 1.7.4 从文件读取数据
 - 1.7.5 使用pickle读写对象
 - 1.8 创建新类
 - 1.9 编程项目
 - 第2章 多项集的概述
 - 2.1 多项集类型
 - 2.1.1 线性多项集
 - 2.1.2 分层多项集
 - 2.1.3 图多项集
 - 2.1.4 无序多项集
 - 2.1.5 有序多项集
 - 2.1.6 多项集类型的分类
 - 2.2 多项集操作
 - 2.2.1 所有多项集类型中的基本操作
 - 2.2.2 类型转换
 - 2.2.3 克隆和相等性
 - 2.3 迭代器和高阶函数
 - 2.4 多项集的实现
 - 2.5 章节总结
 - 2.6 复习题
 - 2.7 编程项目
 - 第3章 搜索、排序以及复杂度分析
 - 3.1 衡量算法的效率
 - 3.1.1 衡量算法的运行时
 - 3.1.2 统计指令数
 - 3.1.3 衡量算法使用的内存
 - 3.2 复杂度分析
 - 3.2.1 复杂度的阶
 - 3.2.2 大O表示法
 - 3.2.3 比例常数的作用
 - 3.3 搜索算法
 - 3.3.1 最小值搜索
 - 3.3.2 顺序搜索列表
 - 3.3.3 最好情况、最坏情况以及平均情况下的性能
 - 3.3.4 基于有序列表的二分搜索
 - 3.3.5 比较数据元素
 - 3.4 基本的排序算法
 - 3.4.1 选择排序
 - 3.4.2 冒泡排序
 - 3.4.3 插入排序
 - 3.4.4 再论最好情况、最坏情况以及平均情况下的性能
 - 3.5 更快的排序
 - 3.5.1 快速排序
 - 3.5.2 归并排序
 - 3.6 指数复杂度的算法:递归斐波那契
 - 将斐波那契转换为线性算法
 - 3.7 案例研究:算法分析器
 - 3.7.1 案例需求
 - 3.7.2 案例分析
 - 3.7.3 案例设计
 - 3.7.4 案例实现(编码)
 - 3.8 章节总结
 - 3.9 复习题
 - 3.10 编程项目
 - 第4章 数组和链接结构
 - 4.1 数组数据结构
 - 4.1.1 随机访问和连续内存
 - 4.1.2 静态内存和动态内存
 - 4.1.3 物理尺寸和逻辑尺寸
 - 4.2 数组的操作
 - 4.2.1 增大数组的尺寸
 - 4.2.2 减小数组的尺寸
 - 4.2.3 将元素插入增大的数组
 - 4.2.4 从数组里删除元素
 - 4.2.5 复杂度的权衡:时间、空间和数组
 - 4.3 二维数组(网格)
 - 4.3.1 使用网格
 - 4.3.2 创建并初始化网格
 - 4.3.3 定义Grid类
 - 4.3.4 参差不齐的网格和多维数组
 - 4.4 链接结构
 - 4.4.1 单向链接结构和双向链接结构
 - 4.4.2 非连续内存和节点
 - 4.4.3 定义单向链接节点类
 - 4.4.4 使用单向链接节点类
 - 4.5 单向链接结构上的操作
 - 4.5.1 遍历
 - 4.5.2 搜索
 - 4.5.3 替换
 - 4.5.4 在开始处插入
 - 4.5.5 在结尾处插入
 - 4.5.6 在开始处删除
 - 4.5.7 在结尾处删除
 - 4.5.8 在任意位置处插入
 - 4.5.9 在任意位置处删除
 - 4.5.10 复杂度的权衡:时间、空间和单向链接结构
 - 4.6 链接上的变化
 - 4.6.1 包含虚拟头节点的环状链接结构
 - 4.6.2 双向链接结构
 - 4.7 章节总结
 - 4.8 复习题
 - 4.9 编程项目
 - 第5章 接口、实现和多态
 - 5.1 开发接口
 - 5.1.1 设计包接口
 - 5.1.2 指定参数和返回值
 - 5.2 构造函数和类的实现
 - 5.2.1 前置条件、后置条件、异常和文档
 - 5.2.2 在Python里编写接口
 - 5.3 开发基于数组的实现
 - 5.3.1 选择并初始化数据结构
 - 5.3.2 先完成简单的方法
 - 5.3.3 完成迭代器
 - 5.3.4 完成使用迭代器的方法
 - 5.3.5 in运算符和__contains__方法
 - 5.3.6 完成remove方法
 - 5.4 开发基于链接的实现
 - 5.4.1 初始化数据结构
 - 5.4.2 完成迭代器
 - 5.4.3 完成clear和add方法
 - 5.4.4 完成remove方法
 - 5.5 两种包实现的运行时性能
 - 5.6 测试包的两种实现
 - 5.7 使用UML绘制包资源
 - 5.8 章节总结
 - 5.9 复习题
 - 5.10 编程项目
 - 第6章 继承与抽象类
 - 6.1 使用继承定制已经存在的类
 - 6.1.1 已有类的子类
 - 6.1.2 修改__init__方法
 - 6.1.3 添加新的contains方法
 - 6.1.4 修改已有的add方法
 - 6.1.5 修改已有的__add__方法
 - 6.1.6 ArraySortedBag的运行时性能
 - 6.1.7 Python里类的层次结构的解释
 - 6.2 使用抽象类消除冗余代码
 - 6.2.1 设计AbstractBag类
 - 6.2.2 重新编写AbstractBag类的init方法
 - 6.2.3 修改AbstractBag的子类
 - 6.2.4 在AbstractBag里模板化__add__方法
 - 6.3 所有多项集的抽象类
 - 6.3.1 把AbstractCollection添加到多项集的层次结构里
 - 6.3.2 在__eq__方法里使用两个迭代器
 - 6.4 多项集的专家级框架
 - 6.5 章节总结
 - 6.6 复习题
 - 6.7 编程项目
 - 第7章 栈
 - 7.1 栈的概述
 - 7.2 使用栈
 - 7.2.1 栈接口
 - 7.2.2 栈的实例化
 - 7.2.3 示例应用程序:括号匹配
 - 7.3 栈的3个应用程序
 - 7.3.1 算术表达式的求值
 - 7.3.2 计算后缀表达式
 - 7.3.3 把中缀表达式转换为后缀表达式
 - 7.3.4 回溯算法
 - 7.3.5 内存管理
 - 7.4 栈的实现
 - 7.4.1 测试驱动
 - 7.4.2 将栈添加到多项集的层次结构
 - 7.4.3 栈的数组实现
 - 7.4.4 栈的链接实现
 - 7.4.5 抽象栈类的作用
 - 7.4.6 两种实现的时间和空间复杂度分析
 - 7.5 案例研究:计算后缀表达式
 - 7.5.1 案例需求
 - 7.5.2 案例分析
 - 7.5.3 案例设计
 - 7.5.4 案例实现
 - 7.6 章节总结
 - 7.7 复习题
 - 7.8 编程项目
 - 第8章 队列
 - 8.1 队列的概述
 - 8.2 队列接口及其使用
 - 8.3 队列的两个应用
 - 8.3.1 计算机模拟
 - 8.3.2 CPU的轮询调度
 - 8.4 队列的实现
 - 8.4.1 队列的链接实现
 - 8.4.2 队列的数组实现
 - 8.4.3 两种实现的时间和空间复杂度分析
 - 8.5 案例研究:超市收银排队的模拟
 - 8.5.1 案例需求
 - 8.5.2 案例分析
 - 8.5.3 用户交互接口
 - 8.5.4 类和它们的职责
 - 8.6 优先队列
 - 8.7 案例研究:急诊室调度程序
 - 8.7.1 案例需求
 - 8.7.2 案例分析
 - 8.7.3 类
 - 8.7.4 案例设计与实现
 - 8.8 章节总结
 - 8.9 复习题
 - 8.10 编程项目
 - 第9章 列表
 - 9.1 列表的概述
 - 9.2 使用列表
 - 9.2.1 基于索引的操作
 - 9.2.2 基于内容的操作
 - 9.2.3 基于位置的操作
 - 9.2.4 列表接口
 - 9.3 列表的应用
 - 9.3.1 堆存储管理
 - 9.3.2 磁盘文件管理
 - 9.3.3 其他多项集的实现
 - 9.4 列表的实现
 - 9.4.1 AbstractList类的作用
 - 9.4.2 基于数组的实现
 - 9.4.3 列表的链接实现
 - 9.4.4 两种实现的时间和空间复杂度分析
 - 9.5 实现列表迭代器
 - 9.5.1 列表迭代器的角色和职责
 - 9.5.2 设置和实例化列表迭代器类
 - 9.5.3 列表迭代器里的导航方法
 - 9.5.4 列表迭代器里的变异器方法
 - 9.5.5 设计链接列表的列表迭代器
 - 9.5.6 列表迭代器实现的时间和空间复杂度分析
 - 9.6 案例研究:开发有序列表
 - 9.6.1 案例需求
 - 9.6.2 案例分析
 - 9.6.3 案例设计
 - 9.6.4 案例实现(编码)
 - 9.7 递归列表的处理
 - 9.7.1 类Lisp列表的基本操作
 - 9.7.2 类Lisp列表的递归遍历
 - 9.7.3 创建类Lisp列表
 - 9.7.4 类Lisp列表的内部结构
 - 9.7.5 使用__repr__在IDLE里输出类Lisp列表
 - 9.7.6 列表和函数式编程
 - 9.8 章节总结
 - 9.9 复习题
 - 9.10 编程项目
 - 第10章 树
 - 10.1 树的概述
 - 10.1.1 树的术语
 - 10.1.2 普通树和二叉树
 - 10.1.3 树的递归定义
 - 10.2 用树结构的原因
 - 10.3 二叉树的形状
 - 10.4 二叉树的遍历
 - 10.4.1 前序遍历
 - 10.4.2 中序遍历
 - 10.4.3 后序遍历
 - 10.4.4 层次遍历
 - 10.5 二叉树的3种常见应用
 - 10.5.1 堆
 - 10.5.2 二叉查找树
 - 10.5.3 表达式树
 - 10.6 开发二叉查找树
 - 10.6.1 二叉查找树接口
 - 10.6.2 链接实现的数据结构
 - 10.6.3 二叉查找树的复杂度分析
 - 10.7 递归下降解析和编程语言
 - 10.7.1 语法简介
 - 10.7.2 识别、解析和解释语言里的句子
 - 10.7.3 词法分析和扫描器
 - 10.7.4 解析策略
 - 10.8 案例研究:解析和表达式树
 - 10.8.1 案例需求
 - 10.8.2 案例分析
 - 10.8.3 节点类的设计与实现
 - 10.8.4 解析器类的设计与实现
 - 10.9 二叉树的数组实现
 - 10.10 堆的实现
 - 10.11 章节总结
 - 10.12 复习题
 - 10.13 编程项目
 - 第11章 集合和字典
 - 11.1 使用集合
 - 11.2 Python的集合类
 - 11.2.1 使用集合的交互示例
 - 11.2.2 集合的应用
 - 11.2.3 集合和包之间的关系
 - 11.2.4 集合与字典之间的关系
 - 11.2.5 集合的实现
 - 11.3 集合的数组实现和链接实现
 - 11.3.1 AbstractSet类
 - 11.3.2 ArraySet类
 - 11.4 使用字典
 - 11.5 字典的数组实现和链接实现
 - 11.5.1 Entry类
 - 11.5.2 AbstractDict类
 - 11.5.3 ArrayDict类
 - 11.5.4 字典的数组实现和链接实现的复杂度分析
 - 11.6 哈希策略
 - 11.6.1 冲突与密度的关系
 - 11.6.2 非数字键的哈希
 - 11.6.3 线性探测法
 - 11.6.4 二次探测法
 - 11.6.5 链式法
 - 11.6.6 复杂度分析
 - 11.7 案例研究:分析哈希策略
 - 11.7.1 案例需求
 - 11.7.2 案例分析
 - 11.7.3 案例设计
 - 11.7.4 案例实现
 - 11.8 集合的哈希实现
 - 11.9 字典的哈希实现
 - 11.10 有序集合和有序字典
 - 11.11 章节总结
 - 11.12 复习题
 - 11.13 编程项目
 - 第12章 图
 - 12.1 使用图的原因
 - 12.2 图的术语
 - 12.3 图的存储方式
 - 12.3.1 邻接矩阵
 - 12.3.2 邻接表
 - 12.3.3 两种存储方式的分析
 - 12.3.4 对运行时的进一步思考
 - 12.4 图的遍历
 - 12.4.1 通用遍历算法
 - 12.4.2 广度优先遍历和深度优先遍历
 - 12.4.3 图的组件
 - 12.5 图里的树
 - 12.5.1 生成树和生成森林
 - 12.5.2 最小生成树
 - 12.5.3 最小生成树的算法
 - 12.6 拓扑排序
 - 12.7 最短路径问题
 - 12.7.1 Dijkstra算法
 - 12.7.2 初始化步骤
 - 12.7.3 计算步骤
 - 12.7.4 无穷大的表示和使用
 - 12.7.5 分析
 - 12.7.6 Floyd算法
 - 12.7.7 分析
 - 12.8 开发图多项集
 - 12.8.1 图多项集的用法示例
 - 12.8.2 LinkedDirectedGraph类
 - 12.8.3 LinkedVertex类
 - 12.8.4 LinkedEdge类
 - 12.9 案例研究:测试图算法
 - 12.9.1 案例需求
 - 12.9.2 案例分析
 - 12.9.3 GraphDemoView类和GraphDemoModel类
 - 12.9.4 案例实现(编码)
 - 12.10 章节总结
 - 12.11 复习题
 - 12.12 编程项目
 
                        展开全部
                        
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。
