当前位置:主页 > 计算机电子书 > Python > 数据结构下载
数据结构与算法:Python语言描述

数据结构与算法:Python语言描述 PDF 超清版

  • 更新:2022-01-25
  • 大小:74 MB
  • 类别:数据结构
  • 作者:裘宗燕
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

内容简介

本书基于Python语言介绍了数据结构与算法的基本知识,主要内容包括抽象数据类型和Python面向对象程序设计、线性表、字符串、栈和队列、二叉树和树、集合、排序以及算法的基本知识。本书延续问题求解的思路,从解决问题的目标来组织教学内容,注重理论与实践的并用。

目录

  • 前言
  • 第1章绪论1
  • 1.1计算机问题求解1
  • 1.1.1程序开发过程1
  • 1.1.2一个简单例子3
  • 1.2问题求解:交叉路口的红绿灯安排4
  • 1.2.1问题分析和严格化5
  • 1.2.2图的顶点分组和算法6
  • 1.2.3算法的精化和Python描述7
  • 1.2.4讨论8
  • 1.3算法和算法分析10
  • 1.3.1问题、问题实例和算法10
  • 1.3.2算法的代价及其度量14
  • 1.3.3算法分析19
  • 1.3.4Python程序的计算代价(复杂度)21
  • 1.4数据结构23
  • 1.4.1数据结构及其分类24
  • 1.4.2计算机内存对象表示26
  • 1.4.3Python对象和数据结构30
  • 练习32
  • 第2章抽象数据类型和Python类34
  • 2.1抽象数据类型34
  • 2.1.1数据类型和数据构造34
  • 2.1.2抽象数据类型的概念36
  • 2.1.3抽象数据类型的描述37
  • 2.2Python的类39
  • 2.2.1有理数类39
  • 2.2.2类定义进阶40
  • 2.2.3本书采用的ADT描述形式43
  • 2.3类的定义和使用44
  • 2.3.1类的基本定义和使用44
  • 2.3.2实例对象:初始化和使用45
  • 2.3.3几点说明47
  • 2.3.4继承49
  • 2.4Python异常53
  • 2.4.1异常类和自定义异常53
  • 2.4.2异常的传播和捕捉54
  • 2.4.3内置的标准异常类54
  • 2.5类定义实例:学校人事管理系统中的类55
  • 2.5.1问题分析和设计56
  • 2.5.2人事记录类的实现57
  • 2.5.3讨论62
  • 本章总结63
  • 练习64
  • 第3章线性表66
  • 3.1线性表的概念和表抽象数据类型66
  • 3.1.1表的概念和性质66
  • 3.1.2表抽象数据类型67
  • 3.1.3线性表的实现:基本考虑69
  • 3.2顺序表的实现69
  • 3.2.1基本实现方式69
  • 3.2.2顺序表基本操作的实现71
  • 3.2.3顺序表的结构74
  • 3.2.4Python的list76
  • 3.2.5顺序表的简单总结78
  • 3.3链接表79
  • 3.3.1线性表的基本需要和链接表79
  • 3.3.2单链表79
  • 3.3.3单链表类的实现84
  • 3.4链表的变形和操作88
  • 3.4.1单链表的简单变形88
  • 3.4.2循环单链表91
  • 3.4.3双链表92
  • 3.4.4两个链表操作95
  • 3.4.5不同链表的简单总结98
  • 3.5表的应用99
  • 3.5.1Josephus问题和基于“数组”概念的解法99
  • 3.5.2基于顺序表的解100
  • 3.5.3基于循环单链表的解101
  • 本章总结102
  • 练习103
  • 第4章字符串107
  • 4.1字符集、字符串和字符串操作107
  • 4.1.1字符串的相关概念107
  • 4.1.2字符串抽象数据类型109
  • 4.2字符串的实现109
  • 4.2.1基本实现问题和技术109
  • 4.2.2实际语言里的字符串110
  • 4.2.3Python的字符串111
  • 4.3字符串匹配(子串查找)112
  • 4.3.1字符串匹配112
  • 4.3.2串匹配和朴素匹配算法113
  • 4.3.3无回溯串匹配算法(KMP算法)115
  • 4.4字符串匹配问题119
  • 4.4.1串匹配/搜索的不同需要120
  • 4.4.2一种简化的正则表达式122
  • 4.5Python正则表达式123
  • 4.5.1概况124
  • 4.5.2基本情况124
  • 4.5.3主要操作125
  • 4.5.4正则表达式的构造126
  • 4.5.5正则表达式的使用132
  • 本章总结132
  • 练习133
  • 第5章栈和队列135
  • 5.1概述135
  • 5.1.1栈、队列和数据使用顺序135
  • 5.1.2应用环境136
  • 5.2栈:概念和实现136
  • 5.2.1栈抽象数据类型137
  • 5.2.2栈的顺序表实现137
  • 5.2.3栈的链接表实现139
  • 5.3栈的应用140
  • 5.3.1简单应用:括号匹配问题140
  • 5.3.2表达式的表示、计算和变换142
  • 5.3.3栈与递归149
  • 5.4队列155
  • 5.4.1队列抽象数据类型155
  • 5.4.2队列的链接表实现155
  • 5.4.3队列的顺序表实现156
  • 5.4.4队列的list实现158
  • 5.4.5队列的应用160
  • 5.5迷宫求解和状态空间搜索162
  • 5.5.1迷宫求解:分析和设计162
  • 5.5.2求解迷宫的算法164
  • 5.5.3迷宫问题和搜索167
  • 5.6几点补充171
  • 5.6.1几种与栈或队列相关的结构171
  • 5.6.2几个问题的讨论172
  • 本章总结173
  • 练习173
  • 第6章二叉树和树176
  • 6.1二叉树:概念和性质176
  • 6.1.1概念和性质177
  • 6.1.2抽象数据类型181
  • 6.1.3遍历二叉树181
  • 6.2二叉树的list实现183
  • 6.2.1设计和实现183
  • 6.2.2二叉树的简单应用:表达式树185
  • 6.3优先队列188
  • 6.3.1概念188
  • 6.3.2基于线性表的实现189
  • 6.3.3树形结构和堆191
  • 6.3.4优先队列的堆实现192
  • 6.3.5堆的应用:堆排序195
  • 6.4应用:离散事件模拟196
  • 6.4.1通用的模拟框架197
  • 6.4.2海关检查站模拟系统198
  • 6.5二叉树的类实现202
  • 6.5.1二叉树结点类203
  • 6.5.2遍历算法204
  • 6.5.3二叉树类208
  • 6.6哈夫曼树209
  • 6.6.1哈夫曼树和哈夫曼算法209
  • 6.6.2哈夫曼算法的实现210
  • 6.6.3哈夫曼编码211
  • 6.7树和树林212
  • 6.7.1实例和表示213
  • 6.7.2定义和相关概念213
  • 6.7.3抽象数据类型和操作215
  • 6.7.4树的实现216
  • 6.7.5树的Python实现218
  • 本章总结220
  • 练习220
  • 第7章图224
  • 7.1概念、性质和实现224
  • 7.1.1定义和图示224
  • 7.1.2图的一些概念和性质225
  • 7.1.3图抽象数据类型227
  • 7.1.4图的表示和实现228
  • 7.2图结构的Python实现231
  • 7.2.1邻接矩阵实现231
  • 7.2.2压缩的邻接矩阵(邻接表)实现233
  • 7.2.3小结235
  • 7.3基本图算法235
  • 7.3.1图的遍历236
  • 7.3.2生成树238
  • 7.4*小生成树240
  • 7.4.1*小生成树问题240
  • 7.4.2Kruskal算法240
  • 7.4.3Prim算法243
  • *7.4.4Prim算法的改进246
  • 7.4.5*小生成树问题247
  • 7.5*短路径248
  • 7.5.1*短路径问题248
  • 7.5.2求解单源点*短路径的Dijkstra算法248
  • 7.5.3求解任意顶点间*短路径的Floyd算法252
  • 7.6AOV/AOE网及其算法255
  • 7.6.1AOV网、拓扑排序和拓扑序列255
  • 7.6.2拓扑排序算法257
  • 7.6.3AOE网和关键路径258
  • 7.6.4关键路径算法259
  • 本章总结261
  • 练习262
  • 第8章字典和集合265
  • 8.1数据存储、检索和字典265
  • 8.1.1数据存储和检索265
  • 8.1.2字典实现的问题267
  • 8.2字典线性表实现269
  • 8.2.1基本实现269
  • 8.2.2有序线性表和二分法检索270
  • 8.2.3字典线性表总结272
  • 8.3散列和散列表273
  • 8.3.1散列的思想和应用273
  • 8.3.2散列函数275
  • 8.3.3冲突的内消解:开地址技术277
  • 8.3.4外消解技术280
  • 8.3.5散列表的性质280
  • 8.4集合282
  • 8.4.1集合的概念、运算和抽象数据类型282
  • 8.4.2集合的实现283
  • 8.4.3特殊实现技术:位向量实现285
  • 8.5Python的标准字典类dict和set286
  • 8.6二叉排序树和字典287
  • 8.6.1二叉排序树288
  • 8.6.2**二叉排序树295
  • 8.6.3一般情况的**二叉排序树297
  • 8.7平衡二叉树302
  • 8.7.1定义和性质302
  • 8.7.2AVL树类303
  • 8.7.3插入操作304
  • 8.7.4相关问题310
  • 8.8动态多分支排序树311
  • 8.8.1多分支排序树311
  • 8.8.2B树312
  • 8.8.3B+树314
  • 本章总结315
  • 练习316
  • 第9章排序319
  • 9.1问题和性质319
  • 9.1.1问题定义319
  • 9.1.2排序算法320
  • 9.2简单排序算法323
  • 9.2.1插入排序323
  • 9.2.2选择排序325
  • 9.2.3交换排序327
  • 9.3快速排序328
  • 9.3.1快速排序的表实现329
  • 9.3.2程序实现330
  • 9.3.3复杂度331
  • 9.3.4另一种简单实现332
  • 9.4归并排序332
  • 9.4.1顺序表的归并排序333
  • 9.4.2归并算法的设计问题333
  • 9.4.3归并排序函数定义333
  • 9.4.4算法分析335
  • 9.5其他排序方法335
  • 9.5.1分配排序和基数排序335
  • 9.5.2一些与排序有关的问题338
  • 9.5.3Python系统的list排序339
  • 本章总结340
  • 练习342
  • 参考文献344

资源下载

资源下载地址1:https://pan.baidu.com/s/134GMWRWxrVhcqLiX6z-YEw

相关资源

网友留言

网友NO.36504
杜灿灿

数据结构的Python描述”这个小班,个人觉得邱老师的这本书很不错。如果读者已经熟悉python语言,尤其是内置的结构元组、list、dict、布景已被熟练地广泛使用回头看这本理论教科书,确实有一本“理论教材”应该严谨高度,而且相当经典。与其他同类教材相比,这是秋版“数据结构的Python版本”最具价值的地方。我给它90分。

本书没有在python语言内置结构的功能上花费篇幅/方法,然后推导出本课程的几个经典章节。相反,从成熟的传统理论框架中回顾python的实现和特点,有利于优化python的应用。因此,这本书是关于python的“效率取向”高级教材也合适。给定的原始代码不追求完整性,它最大程度地关注点对点“数据结构”核心内容,省略次要细节。他的叙事风格和角度对我个人非常有用与国外其他同类教材相比,也是本书最明显的特点。

说说缺点。这本书里的例子和练习一般都是用冷峻的方式来表达的。经典教材的写作风格不应该等同于机械化。在这方面,米勒的第二版优秀而生动、新颖的面向生活的示例表达有助于直观地理解数据结构。毕竟《数据结构》也是一门课程,一部教科书,表达的友好程度关系到教科书的亲和力和口碑(据介绍,北京大学地物系目前使用的是米勒的数据结构py教材)

总之,瑕不掩瑜。如果python已经知道了,并且想要细化数据结构的理论,那么这个版本就是优秀的。没有之一。