数据结构 Python语言描述 Kenneth,A.,Lambert,兰伯特 著,李军 译
【85成左右新】笔记很少,整体很新,质量问题支持退换货,售后无忧;但不要拍错哦!
¥
8.14
1.2折
¥
69
八五品
库存25件
作者Kenneth,A.,Lambert,兰伯特 著,李军 译
出版社人民邮电出版社
ISBN9787115464613
出版时间2017-12
版次1
装帧平装
开本16开
纸张胶版纸
页数300页
字数99999千字
定价69元
货号9787115464613
上书时间2023-12-29
商品详情
- 品相描述:八五品
-
【书非常新,有少许笔记】但不影响阅读,无附件和增值服务等。
- 商品描述
-
基本信息
书名:数据结构 Python语言描述
定价:69.00元
作者:Kenneth,A.,Lambert,兰伯特 著,李军 译
出版社:人民邮电出版社
出版日期:2017-12-01
ISBN:9787115464613
字数:462000
页码:300
版次:1
装帧:平装
开本:16开
商品重量:
编辑推荐
不管你是程序设计爱好者、计算机专业的学生还是一位专业程序员,本书都是你通过Python编程语言学习面向对象设计和数据结构的不错的入门教程。通过清晰的示例、按部就班的讲解以及众多实用的练习,本书教你通过Python理解并使用数据结构。 使用多态和继承来设计集合类; 集合接口的多个实现; 不同的集合实现的时间/空间代价分析。
内容提要
在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大。Python语言的语法简单,交互性强。用Python来讲解数据结构等主题,比C语言等实现起来更为容易,更为清晰。《数据结构 Python语言描述》章简单介绍了Python语言的基础知识和特性。第2章到第4章对抽象数据类型、数据结构、复杂度分析、数组和线性链表结构进行了详细介绍,第5章和第6章重点介绍了面向对象设计的相关知识、第5章包括接口和实现之间的重点差异、多态以及信息隐藏等内容,第6章主要讲解继承的相关知识,第7章到第9章以栈、队列和列表为代表,介绍了线性集合的相关知识。0章介绍了各种树结构,1章讲解了集和字典的相关内容,2章介绍了图和图处理算法。每章最后,还给出了复习题和案例学习,帮助读者巩固和思考。《数据结构 Python语言描述》不仅适合高等院校计算机专业师生阅读,也适合对Python感兴趣的读者和程序员阅读。
目录
章 Python编程基础t11.1 基本程序要素t11.1.1 程序和模块t11.1.2 Python程序示例:猜数字t11.1.3 编辑、编译并运行Python程序t21.1.4 程序注释t31.1.5 词法元素t31.1.6 拼写和命名惯例t31.1.7 语法元素t41.1.8 字面值t41.1.9 字符串字面值t41.1.10 运算符和表达式t51.1.11 函数调用t51.1.12 print函数t51.1.13 input函数t51.1.14 类型转换函数和混合模式运算t61.1.15 可选的和关键字函数参数t61.1.16 变量和赋值语句t61.1.17 Python数据类型t71.1.18 import语句t71.1.19 获取关于程序组件的帮助t71.2 控制语句t81.2.1 条件式语句t81.2.2 使用if __name__ == "__main__"t91.2.3 循环语句t101.3 字符串及其运算t101.3.1 运算符t101.3.2 格式化字符串以便输出t111.3.3 对象和方法调用t131.4 内建Python集合及其操作t131.4.1 列表t141.4.2 元组t141.4.3 遍历序列t141.4.4 字典t151.4.5 搜索一个值t151.4.6 对集合应用模式匹配t151.5 编写新的函数t161.5.1 函数定义t161.5.2 递归函数t171.5.3 嵌套的函数定义t191.5.4 高阶函数t191.5.5 使用lambda表达式创建匿名函数t201.6 捕获异常t201.7 文件及其操作t211.7.1 文本文件的输出t221.7.2 将数字写入到一个文本文件t221.7.3 从文本文件读取文本t231.7.4 从文件读取数字t241.7.5 使用pickle读写对象t241.8 创建新的类t251.9 编程项目t28第2章 集合概览t302.1 集合类型t302.1.1 线性集合t302.1.2 层级集合t312.1.3 图集合t312.1.4 无序集合t312.1.5 有序集合t312.1.6 集合类型的分类t322.2 集合上的操作t322.3 集合的实现t342.4 小结t352.5 复习题t352.6 编程项目t36第3章 搜索、排序和复杂度分析t373.1 评估算法的性能t373.1.1 度量算法的运行时间t373.1.2 统计指令t393.1.3 度量算法所使用的内存t413.1.4 练习3.1t413.2 复杂度分析t413.2.1 复杂度的阶t413.2.2 大O表示法t433.2.3 常量比例的作用t433.2.4 练习3.2t433.3 搜索算法t443.3.1 搜索值t443.3.2 顺序搜索一个列表t443.3.3 情况、最坏情况和平均情况的性能t453.3.4 有序列表的二叉搜索t453.3.5 比较数据项t473.3.6 练习3.3t483.4 基本排序算法t483.4.1 选择排序t483.4.2 冒泡排序t493.4.3 插入排序t503.4.4 再谈情况、最坏情况和平均情况的性能t523.4.5 练习3.4t523.5 更快的排序t533.5.1 快速排序简介t533.5.2 合并排序t563.5.3 练习3.5t593.6 指数算法:递归式的Fibonaccit593.7 案例学习:算法探查器t613.7.1 需求t613.7.2 分析t613.7.3 设计t623.7.4 实现(编写代码)t633.8 小结t653.9 复习题t663.10 编程项目t67第4章 数组和链表结构t694.1 数组数据结构t694.1.1 随机访问和连续内存t714.1.2 静态内存和动态内存t724.1.3 物理大小和逻辑大小t724.1.4 练习4.1t734.2 数组的操作t734.2.1 增加数组的大小t734.2.2 减小数组的大小t744.2.3 在数组中插入一项t744.2.4 从数组中删除一项t754.2.5 复杂度权衡:时间、空间和数组t764.2.6 练习4.2t764.3 二维数组t774.3.1 处理网格t774.3.2 创建并初始化网格t774.3.3 定义Grid类t784.3.4 杂乱的网格和多维数组t794.3.5 练习4.3t794.4 链表结构t804.4.1 单链表结构和双链表结构t804.4.2 非连续性内存和节点t814.4.3 定义一个单链表节点类t824.4.4 使用单链表节点类t824.4.5 练习4.4t844.5 单链表结构上的操作t844.5.1 遍历t844.5.2 搜索t854.5.3 替换t864.5.4 在开始处插入t864.5.5 在末尾插入t874.5.6 从开始处删除t874.5.7 从末尾删除t884.5.8 在任何位置插入t894.5.9 从任意位置删除t904.5.10 复杂度权衡:时间、空间和单链表结构t914.5.11 练习4.5t924.6 链表的变体t924.6.1 带有一个哑头节点的循环链表结构t924.6.2 双链表结构t934.6.3 练习4.6t954.7 小结t954.8 复习题t964.9 编程项目t96第5章 接口、实现和多态t985.1 开发接口t985.1.1 定义包接口t985.1.2 指定参数和返回值t995.1.3 构造方法和实现类t1015.1.4 先验条件、后验条件、异常和文档t1015.1.5 用Python编写接口t1025.1.6 练习5.1t1035.2 开发一个基于数组的实现t1035.2.1 选择并初始化数据结构t1035.2.2 先完成容易的方法t1045.2.3 完成迭代器t1055.2.4 完成使用迭代器的方法t1065.2.5 in运算符和__contains__方法t1065.2.6 完成remove方法t1075.2.7 练习5.2t1075.3 开发一个基于链表的实现t1075.3.1 初始化数据结构t1085.3.2 完成迭代器t1095.3.3 完成clear和add方法t1095.3.4 完成remove方法t1095.3.5 练习5.3t1105.4 两个包实现的运行时性能t1105.5 测试两个包实现t1115.6 用UML图表示包资源t1125.7 小结t1135.8 复习题t1135.9 编程项目t114第6章 继承和抽象类t1156.1 使用继承定制一个已有的类t1156.1.1 已有类的子类化t1156.1.2 再谈__init__方法t1166.1.3 添加新的contains方法t1176.1.4 修改已有的add方法t1176.1.5 ArraySortedBag的运行时间性能t1186.1.6 Python中的类层级t1186.1.7 练习6.1t1196.2 使用抽象类去除代码冗余性t1196.2.1 设计一个AbstractBag类t1196.2.2 重新编写AbstractBag中的__init__方法t1206.2.3 修改AbstractBag的子类t1206.2.4 将AbstractBag中的__add__方法泛化t1216.3 所有集合的一个抽象类t1226.3.1 将AbstractCollection整合到集合层级中t1226.3.2 在__eq__方法中使用两个迭代器t1236.3.3 练习6.2t1246.4 小结t1246.5 复习题t1246.6 编程项目t125第7章 栈t1277.1 栈概览t1277.2 使用栈t1287.2.1 栈接口t1287.2.2 初始化一个栈t1297.2.3 示例应用程序:匹配括号t1297.2.4 练习7.1t1317.3 栈的3种应用t1317.3.1 计算算术表达式t1317.3.2 计算后缀表达式t1327.3.3 练习7.2t1337.3.4 将中缀表达式转换为后缀表达式t1337.3.5 练习7.3t1357.3.6 回溯算法t1357.3.7 内存管理t1377.4 栈的实现t1387.4.1 测试驱动程序t1387.4.2 将栈添加到集合层级中t1397.4.3 数组实现t1407.4.4 链表实现t1417.4.5 AbstractStack类的作用t1447.4.6 两种实现的时间和空间分析t1447.4.7 练习7.4t1457.5 案例学习:计算后缀表达式t1457.5.1 要求t1457.5.2 分析t1457.5.3 设计t1487.5.4 实现t1507.6 小结t1537.7 复习题t1537.8 编程项目t154第8章 队列t1568.1 队列概览t1568.2 队列接口及其应用t157练习8.1t1588.3 队列的两个应用t1598.3.1 模拟t1598.3.2 轮询CPU调度t1618.3.3 练习8.2t1618.4 队列的实现t1618.4.1 队列的链表实现t1618.4.2 数组实现t1638.4.3 两种实现的时间和空间复杂度分析t1648.4.4 练习8.3t1658.5 案例学习:模拟超市排队结账t1658.5.1 要求t1658.5.2 分析t1658.5.3 用户界面t1668.5.4 类及其作用t1668.6 优先队列t171练习8.4t1758.7 案例学习:急症室调度t1758.7.1 需求t1758.7.2 分析t1758.7.3 类t1768.7.4 设计和实现t1778.8 小结t1798.9 复习题t1798.10 编程项目t180第9章 列表t1829.1 概览t1829.2 使用列表t1839.2.1 基于索引的操作t1839.2.2 基于内容的操作t1839.2.3 基于位置的操作t1849.2.4 列表的接口t1879.2.5 练习9.1t1889.3 列表的应用t1889.3.1 堆存储管理t1889.3.2 组织磁盘上的文件t1899.3.3 其他集合的实现t1909.4 列表实现t1919.4.1 AbstractList类的角色t1919.4.2 基于数组的实现t1929.4.3 链表实现t1949.4.4 两种实现的时间和空间分析t1969.4.5 练习9.2t1979.5 实现列表迭代器t1979.5.1 列表迭代器的角色和作用t1979.5.2 设置和实例化一个列表迭代器类t1989.5.3 列表迭代器中的导航方法t1999.5.4 列表迭代器中的修改器方法t2009.5.5 链表列表的列表迭代器的设计t2019.5.6 列表迭代器实现的时间和空间分析t2019.6 案例学习:开发一个有序的列表t2019.6.1 要求t2019.6.2 分析t2029.6.3 设计t2029.6.4 实现(代码)t2049.7 小结t2059.8 复习题t2059.9 编程项目t2060章 树t20810.1 树的概览t20810.1.1 树的术语t20810.1.2 普通的树和二叉树t20910.1.3 树的递归定义t21010.1.4 练习10.1t21010.2 为什么要使用树t21010.3 二叉树的形状t211练习10.2t21310.4 二叉树的3种常见应用t21310.4.1 堆t21310.4.2 二叉搜索树t21410.4.3 表达式树t21510.4.4 练习10.3t21610.5 二叉树的遍历t21610.5.1 前序遍历t21610.5.2 中序遍历t21710.5.3 后序遍历t21710.5.4 层序遍历t21710.6 开发二叉搜索树t21710.6.1 二叉搜索树接口t21810.6.2 链表实现的数据结构t21910.6.3 二叉搜索树的复杂度分析t22310.6.4 练习10.4t22410.7 递归的后代解析和编程语言t22410.7.1 语法简介t22410.7.2 在语言中识别、解析和解释句子t22610.7.3 词法分析和扫描器t22610.7.4 解析策略t22710.8 案例学习:解析和表达式树t22710.8.1 要求t22710.8.2 分析t22810.8.3 节点类的设计和实现t22810.8.4 解析器类的设计和实现t23010.9 二叉树的数组实现t231练习10.5t23210.10 实现堆t232练习10.6t23410.11 小结t23410.12 复习题t23510.13 编程项目t2361章 集和字典t23811.1 使用集t23811.2 Python的set类t23911.2.1 集的一个示例会话t23911.2.2 集的应用t24011.2.3 集和包的关系t24011.2.4 集和字典的关系t24011.2.5 集的实现t24011.2.6 练习11.1t24111.3 集的基于数组和链表的实现t24111.3.1 AbstractSet类t24111.3.2 ArraySet类t24211.4 使用字典t24311.5 基于数组和基于链表的字典实现t24411.5.1 Item类t24411.5.2 AbstractDict类t24511.5.3 ArrayDict类t24611.5.4 集和字典的基于数组和列表的实现的复杂度分析t24711.5.5 练习11.2t24811.6 哈希策略t24811.6.1 冲突和密度的关系t24911.6.2 非数字键的哈希t25011.6.3 线性探测t25111.6.4 二次探测t25211.6.5 链化t25311.6.6 复杂度分析t25311.6.7 练习11.3t25411.7 案例学习:探查哈希策略t25411.7.1 需求t25511.7.2 分析t25511.7.3 设计t25611.8 集的哈希实现t25811.9 字典的哈希实现t261练习11.4t26311.10 有序的集和字典t26311.11 小结t26411.12 复习题t26411.13 编程项目t2652章 图t26712.1 图的术语t267练习12.1t26912.2 为什么使用图t27012.3 图的表示t27012.3.1 相邻矩阵t27012.3.2 邻接表t27112.3.3 两种表示的分析t27212.3.4 运行时间的进一步考虑t27212.3.5 练习12.2t27312.4 图的遍历t27312.4.1 泛型遍历算法t27312.4.2 广度优先遍历和深度优先遍历t27412.4.3 图区域t27512.4.4 练习12.3t27612.5 图中的树t27612.5.1 生成树和森林t27612.5.2 生成树t27712.5.3 生成树的算法t27712.6 拓扑排序t27912.7 最短路径问题t27912.7.1 Dijkstra算法t28012.7.2 初始化步骤t28012.7.3 计算步骤t28112.7.4 无限的表示和用法t28212.7.5 分析t28212.7.6 练习12.4t28212.7.7 Floyd算法t28312.7.8 分析t28312.8 开发一个图集合t28412.8.1 使用图集合的示例t28412.8.2 LinkedDirected- Graph类t28512.8.3 LinkedVertex类t28812.8.4 LinkedEdge类t28912.9 案例学习:测试图算法t29012.9.1 需求t29012.9.2 分析t29012.9.3 GraphDemoView类和GraphDemoModel类t29112.9.4 实现(代码)t29212.10 小结t29512.11 复习题t29612.12 编程项目t297附录 供Python程序员使用的集合框架t299
作者介绍
Kenneth A .Lambert是华盛顿与李大学的计算机科学教授和系主任。他教授编程课程30 年 ,并且是计算机科学教育的积极研究者。Lambert编著以及与人合著了一共2 5 本教材,包括与Douglas Nance和Thomas Naps编写的一系列C++ 入门教材,与MartiOor ne编写的一系列Java入门教材, 以及一系列Python入门教材。他还是《Easy GUI Progr amming iPython》的作者。
序言
— 没有更多了 —
以下为对购买帮助不大的评价