基本信息
书名:数据结构Python语言描述
定价:69.00元
作者:KenhA.Lambert兰伯特
出版社:人民邮电出版社
出版日期:2017-12-01
ISBN:9787#115464613
字数:
页码:
版次:
装帧:平装-胶订
开本:16开
目录章Python编程基础1
1.1基本程序要素1
1.1.1程序和模块1
1.1.2Python程序示例:猜数字1
1.1.3编辑、编译并运行
Python程序2
1.1.4程序注释3
1.1.5词法元素3
1.1.6拼写和命名惯例3
1.1.7语法元素4
1.1.8字面值4
1.1.9字符串字面值4
1.1.10运算符和表达式5
1.1.11函数调用5
1.1.12print函数5
1.1.13input函数5
1.1.14类型转换函数和
混合模式运算6
1.1.15可选的和关键字
函数参数6
1.1.16变量和赋值语句6
1.1.17Python数据类型7
1.1.18import语句7
1.1.19获取关于程序组件
的帮助7
1.2控制语句8
1.2.1条件式语句8
1.2.2使用if__name__==
'__main__'9
1.2.3循环语句10
1.3字符串及其运算10
1.3.1运算符10
1.3.2格式化字符串以便输出11
1.3.3对象和方法调用13
1.4内建Python集合及其操作13
1.4.1列表14
1.4.2元组14
1.4.3遍历序列14
1.4.4字典15
1.4.5搜索一个值15
1.4.6对集合应用模式匹配15
1.5编写新的函数16
1.5.1函数定义16
1.5.2递归函数17
1.5.3嵌套的函数定义19
1.5.4高阶函数19
1.5.5使用lambda表达式
创建匿名函数20
1.6捕获异常20
1.7文件及其操作21
1.7.1文本文件的输出22
1.7.2将数字写入到一个
文本文件22
1.7.3从文本文件读取文本23
1.7.4从文件读取数字24
1.7.5使用pickle读写对象24
1.8创建新的类25
1.9编程项目28
第2章集合概览30
2.1集合类型30
2.1.1线性集合30
2.1.2层级集合31
2.1.3图集合31
2.1.4无序集合31
2.1.5有序集合31
2.1.6集合类型的分类32
2.2集合上的操作32
2.3集合的实现34
2.4小结35
2.5复习题35
2.6编程项目36
第3章搜索、排序和复杂度分析37
3.1评估算法的性能37
3.1.1度量算法的运行时间37
3.1.2统计指令39
3.1.3度量算法所使用的内存41
3.1.4练习3.141
3.2复杂度分析41
3.2.1复杂度的阶41
3.2.2大O表示法43
3.2.3常量比例的作用43
3.2.4练习3.243
3.3搜索算法44
3.3.1搜索小值44
3.3.2顺序搜索一个列表44
3.3.3情况、坏情况和
平均情况的性能45
3.3.4有序列表的二叉搜索45
3.3.5比较数据项47
3.3.6练习3.348
3.4基本排序算法48
3.4.1选择排序48
3.4.2冒泡排序49
3.4.3插入排序50
3.4.4再谈情况、坏情
况和平均情况的性能52
3.4.5练习3.452
3.5更快的排序53
3.5.1快速排序简介53
3.5.2合并排序56
3.5.3练习3.559
3.6指数算法:递归式的
Fibonacci59
3.7案例学习:算法探查器61
3.7.1需求61
3.7.2分析61
3.7.3设计62
3.7.4实现(编写代码)63
3.8小结65
3.9复习题66
3.10编程项目67
第4章数组和链表结构69
4.1数组数据结构69
4.1.1访问和连续内存71
4.1.2静态内存和动态内存72
4.1.3物理大小和逻辑大小72
4.1.4练习4.173
4.2数组的操作73
4.2.1增加数组的大小73
4.2.2减小数组的大小74
4.2.3在数组中插入一项74
4.2.4从数组中删除一项75
4.2.5复杂度权衡:时间、
空间和数组76
4.2.6练习4.276
4.3二维数组77
4.3.1处理网格77
4.3.2创建并初始化网格77
4.3.3定义Grid类78
4.3.4杂乱的网格和多维数组79
4.3.5练习4.379
4.4链表结构80
4.4.1单链表结构和双链表
结构80
4.4.2非连续性内存和节点81
4.4.3定义一个单链表节点类82
4.4.4使用单链表节点类82
4.4.5练习4.484
4.5单链表结构上的操作84
4.5.1遍历84
4.5.2搜索85
4.5.3替换86
4.5.4在开始处插入86
4.5.5在末尾插入87
4.5.6从开始处删除87
4.5.7从末尾删除88
4.5.8在任何位置插入89
4.5.9从任意位置删除90
4.5.10复杂度权衡:时间、
空间和单链表结构91
4.5.11练习4.592
4.6链表的变体92
4.6.1带有一个哑头节点
的循环链表结构92
4.6.2双链表结构93
4.6.3练习4.695
4.7小结95
4.8复习题96
4.9编程项目96
第5章接口、实现和多态98
5.1开发接口98
5.1.1定义包接口98
5.1.2指定参数和返回值99
5.1.3构造方法和实现类101
5.1.4先验条件、后验条件、
异常和文档101
5.1.5用Python编写接口102
5.1.6练习5.1103
5.2开发一个基于数组的实现103
5.2.1选择并初始化数据
结构103
5.2.2先完成容易的方法104
5.2.3完成迭代器105
5.2.4完成使用迭代器
的方法106
5.2.5in运算符和__contains__
方法106
5.2.6完成remove方法107
5.2.7练习5.2107
5.3开发一个基于链表的实现107
5.3.1初始化数据结构108
5.3.2完成迭代器109
5.3.3完成clear和add方法109
5.3.4完成remove方法109
5.3.5练习5.3110
5.4两个包实现的运行时性能110
5.5测试两个包实现111
5.6用UML图表示包资源112
5.7小结113
5.8复习题113
5.9编程项目114
第6章继承和抽象类115
6.1使用继承定制一个已有的类115
6.1.1已有类的子类化115
6.1.2再谈__init__方法116
6.1.3添加新的contains方法117
6.1.4修改已有的add方法117
6.1.5ArraySortedBag的运行
时间性能118
6.1.6Python中的类层级118
6.1.7练习6.1119
6.2使用抽象类去除代码冗余性119
6.2.1设计一个
AbstractBag类119
6.2.2重新编写AbstractBag
中的__init__方法120
6.2.3修改AbstractBag
的子类120
6.2.4将AbstractBag中的
__add__方法泛化121
6.3所有集合的一个抽象类122
6.3.1将AbstractCollection
整合到集合层级中122
6.3.2在__eq__方法中使用
两个迭代器123
6.3.3练习6.2124
6.4小结124
6.5复习题124
6.6编程项目125
第7章栈127
7.1栈概览127
7.2使用栈128
7.2.1栈接口128
7.2.2初始化一个栈129
7.2.3示例应用程序:
匹配括号129
7.2.4练习7.1131
7.3栈的3种应用131
7.3.1计算算术表达式131
7.3.2计算后缀表达式132
7.3.3练习7.2133
7.3.4将中缀表达式转换为
后缀表达式133
7.3.5练习7.3135
7.3.6回溯算法135
7.3.7内存管理137
7.4栈的实现138
7.4.1测试驱动程序138
7.4.2将栈添加到集合层级中139
7.4.3数组实现140
7.4.4链表实现141
7.4.5AbstractStack类的
作用144
7.4.6两种实现的时间和
空间分析144
7.4.7练习7.4145
7.5案例学习:计算后缀表达式145
7.5.1要求145
7.5.2分析145
7.5.3设计148
7.5.4实现150
7.6小结153
7.7复习题153
7.8编程项目154
第8章队列156
8.1队列概览156
8.2队列接口及其应用157
练习8.1158
8.3队列的两个应用159
8.3.1模拟159
8.3.2轮询CPU调度161
8.3.3练习8.2161
8.4队列的实现161
8.4.1队列的链表实现161
8.4.2数组实现163
8.4.3两种实现的时间和
空间复杂度分析164
8.4.4练习8.3165
8.5案例学习:模拟超市排队
结账165
8.5.1要求165
8.5.2分析165
8.5.3用户界面166
8.5.4类及其作用166
8.6队列171
练习8.4175
8.7案例学习:急症室调度175
8.7.1需求175
8.7.2分析175
8.7.3类176
8.7.4设计和实现177
8.8小结179
8.9复习题179
8.10编程项目180
第9章列表182
9.1概览182
9.2使用列表183
9.2.1基于索引的操作183
9.2.2基于内容的操作183
9.2.3基于位置的操作184
9.2.4列表的接口187
9.2.5练习9.1188
9.3列表的应用188
9.3.1堆存储管理188
9.3.2组织磁盘上的文件189
9.3.3其他集合的实现190
9.4列表实现191
9.4.1AbstractList类的角色191
9.4.2基于数组的实现192
9.4.3链表实现194
9.4.4两种实现的时间和
空间分析196
9.4.5练习9.2197
9.5实现列表迭代器197
9.5.1列表迭代器的角色
和作用197
9.5.2设置和实例化一个
列表迭代器类198
9.5.3列表迭代器中的导
航方法199
9.5.4列表迭代器中的修
改器方法200
9.5.5链表列表的列表迭
代器的设计201
9.5.6列表迭代器实现的
时间和空间分析201
9.6案例学习:开发一个有序
的列表201
9.6.1要求201
9.6.2分析202
9.6.3设计202
9.6.4实现(代码)204
9.7小结205
9.8复习题205
9.9编程项目206
0章树208
10.1树的概览208
10.1.1树的术语208
10.1.2普通的树和二叉树209
10.1.3树的递归定义210
10.1.4练习10.1210
10.2为什么要使用树210
10.3二叉树的形状211
练习10.2213
10.4二叉树的3种常见应用213
10.4.1堆213
10.4.2二叉搜索树214
10.4.3表达式树215
10.4.4练习10.3216
10.5二叉树的遍历216
10.5.1前序遍历216
10.5.2中序遍历217
10.5.3后序遍历217
10.5.4层序遍历217
10.6开发二叉搜索树217
10.6.1二叉搜索树接口218
10.6.2链表实现的数据结构219
10.6.3二叉搜索树的复杂度
分析223
10.6.4练习10.4224
10.7递归的后代解析和编程语言224
10.7.1语法简介224
10.7.2在语言中识别、解析
和解释句子226
10.7.3词法分析和扫描器226
10.7.4解析策略227
10.8案例学习:解析和表达式树227
10.8.1要求227
10.8.2分析228
10.8.3节点类的设计和实现228
10.8.4解析器类的设计和
实现230
10.9二叉树的数组实现231
练习10.5232
10.10实现堆232
练习10.6234
10.11小结234
10.12复习题235
10.13编程项目236
1章集和字典238
11.1使用集238
11.2Python的set类239
11.2.1集的一个示例会话239
11.2.2集的应用240
11.2.3集和包的关系240
11.2.4集和字典的关系240
11.2.5集的实现240
11.2.6练习11.1241
11.3集的基于数组和链表的实现241
11.3.1AbstractSet类241
11.3.2ArraySet类242
11.4使用字典243
11.5基于数组和基于链表的
字典实现244
11.5.1Item类244
11.5.2AbstractDict类245
11.5.3ArrayDict类246
11.5.4集和字典的基于数组
和列表的实现的复杂
度分析247
11.5.5练习11.2248
11.6哈希策略248
11.6.1冲突和密度的关系249
11.6.2非数字键的哈希250
11.6.3线性探测251
11.6.4二次探测252
11.6.5链化253
11.6.6复杂度分析253
11.6.7练习11.3254
11.7案例学习:探查哈希策略254
11.7.1需求255
11.7.2分析255
11.7.3设计256
11.8集的哈希实现258
11.9字典的哈希实现261
练习11.4263
11.10有序的集和字典263
11.11小结264
11.12复习题264
11.13编程项目265
2章图267
12.1图的术语267
练习12.1269
12.2为什么使用图270
12.3图的表示270
12.3.1相邻矩阵270
12.3.2邻接表271
12.3.3两种表示的分析272
12.3.4运行时间的进一步
考虑272
12.3.5练习12.2273
12.4图的遍历273
12.4.1泛型遍历算法273
12.4.2广度遍历和深度
遍历274
12.4.3图区域275
12.4.4练习12.3276
12.5图中的树276
12.5.1生成树和森林276
12.5.2小生成树277
12.5.3小生成树的算法277
12.6拓扑排序279
12.7短路径问题279
12.7.1Dijkstra算法280
12.7.2初始化步骤280
12.7.3计算步骤281
12.7.4无限的表示和用法282
12.7.5分析282
12.7.6练习12.4282
12.7.7Floyd算法283
12.7.8分析283
12.8开发一个图集合284
12.8.1使用图集合的示例284
12.8.2LinkedDirected-
Graph类285
12.8.3LinkedVertex类288
12.8.4LinkedEdge类289
12.9案例学习:测试图算法290
12.9.1需求290
12.9.2分析290
12.9.3GraphDemoView类和
GraphDemoModel类291
12.9.4实现(代码)292
12.10小结295
12.11复习题296
12.12编程项目297
附录供Python程序员使用的
集合框架299